﻿# 2.6.22 — Institutional opposition.
# Cucked-but-not-controlled enemies can coordinate. Owned / fully controlled subjects are explicitly excluded.

# Patron scope. Runs twice yearly at most and never creates popup spam.
domcom_opposition_pulse_effect = {
    if = {
        limit = {
            is_alive = yes
            is_landed = yes
            NOT = { has_character_flag = domcom_opposition_scan_cooldown }
        }
        add_character_flag = { flag = domcom_opposition_scan_cooldown days = 180 }
        save_scope_as = domcom_opposition_patron
        clear_variable_list = domcom_opposition_candidates

        if = {
            limit = { has_variable_list = domcom_cucked_registry }
            every_in_list = {
                variable = domcom_cucked_registry
                limit = {
                    is_alive = yes
                    is_landed = yes
                    NOT = { has_character_flag = domcom_owned_cuck }
                    NOT = { has_character_flag = domcom_bound_ruler }
                    NOT = { AND = { has_variable = domcom_terminal_outcome var:domcom_terminal_outcome = flag:bound_ruler } }
                    NOT = { has_character_flag = domcom_lick_bound_active_recently }
                    NOT = { has_character_flag = domcom_lick_permanently_bound }
                    OR = {
                        AND = { has_variable = domcom_cuck_origin_patron var:domcom_cuck_origin_patron = scope:domcom_opposition_patron }
                        AND = { has_variable = domcom_cuck_patron var:domcom_cuck_patron = scope:domcom_opposition_patron }
                        any_in_list = { variable = domcom_cuck_patrons this = scope:domcom_opposition_patron }
                    }
                    opinion = { target = scope:domcom_opposition_patron value <= -20 }
                }
                save_temporary_scope_as = domcom_opposition_candidate
                scope:domcom_opposition_patron = { add_to_variable_list = { name = domcom_opposition_candidates target = scope:domcom_opposition_candidate } }
            }
        }

        # Give defiance bonuses based on how reckless the challenge is. Being badly outmatched makes the opposition stronger.
        every_in_list = {
            variable = domcom_opposition_candidates
            remove_character_modifier = domcom_defiant_opposition_minor
            remove_character_modifier = domcom_defiant_opposition_major
            remove_character_modifier = domcom_defiant_opposition_desperate
            if = {
                limit = { scope:domcom_opposition_patron.current_military_strength >= fifty_percent_more_of_current_military_strength }
                add_character_modifier = { modifier = domcom_defiant_opposition_desperate years = 1 }
            }
            else_if = {
                limit = { scope:domcom_opposition_patron.current_military_strength > current_military_strength }
                add_character_modifier = { modifier = domcom_defiant_opposition_major years = 1 }
            }
            else = { add_character_modifier = { modifier = domcom_defiant_opposition_minor years = 1 } }
        }

        # A coalition war is deliberately uncommon. We require at least three viable landed enemies and a hostile leader.
        set_variable = { name = domcom_opposition_count value = 0 }
        every_in_list = {
            variable = domcom_opposition_candidates
            scope:domcom_opposition_patron = { change_variable = { name = domcom_opposition_count add = 1 } }
        }
        if = {
            limit = {
                var:domcom_opposition_count >= 3
                NOT = { is_at_war = yes }
                NOT = { has_character_flag = domcom_opposition_war_cooldown }
            }

            # Existing Cuck Autonomy now also governs organized military resistance, so the player does
            # not need another rule to remember. Static makes coalition wars rare, Standard conservative,
            # and Dynamic meaningfully more volatile.
            set_variable = { name = domcom_opposition_war_chance value = 4 }
            if = { limit = { has_game_rule = domcom_cuck_autonomy_static } set_variable = { name = domcom_opposition_war_chance value = 1 } }
            else_if = { limit = { has_game_rule = domcom_cuck_autonomy_dynamic } set_variable = { name = domcom_opposition_war_chance value = 8 } }
            if = { limit = { var:domcom_opposition_count >= 6 } change_variable = { name = domcom_opposition_war_chance add = 2 } }
            if = { limit = { var:domcom_opposition_count >= 10 } change_variable = { name = domcom_opposition_war_chance add = 2 } }

            random_in_list = {
                variable = domcom_opposition_candidates
                limit = {
                    is_independent_ruler = yes
                    is_at_war = no
                    NOT = { has_character_flag = domcom_opposition_leader_war_cooldown }
                    OR = { has_trait = brave has_trait = ambitious has_trait = vengeful has_trait = wrathful }
                }
                save_temporary_scope_as = domcom_opposition_leader
            }
            if = {
                limit = { exists = scope:domcom_opposition_leader }
                random = {
                    chance = var:domcom_opposition_war_chance
                    add_character_flag = { flag = domcom_opposition_war_cooldown years = 10 }
                    scope:domcom_opposition_leader = {
                        add_character_flag = { flag = domcom_opposition_leader_war_cooldown years = 12 }
                        start_war = { casus_belli = domcom_defiance_coalition_war target = scope:domcom_opposition_patron }
                        every_character_war = {
                            limit = { using_cb = domcom_defiance_coalition_war casus_belli = { primary_attacker = scope:domcom_opposition_leader primary_defender = scope:domcom_opposition_patron } }
                            save_scope_as = domcom_opposition_war
                        }
                    }
                    if = {
                        limit = { exists = scope:domcom_opposition_war }
                        set_variable = { name = domcom_opposition_added value = 0 }
                        every_in_list = {
                            variable = domcom_opposition_candidates
                            limit = {
                                this != scope:domcom_opposition_leader
                                is_independent_ruler = yes
                                is_at_war = no
                                NOT = { has_character_flag = domcom_opposition_leader_war_cooldown }
                            }
                            save_temporary_scope_as = domcom_opposition_extra
                            add_character_flag = { flag = domcom_opposition_leader_war_cooldown years = 8 }
                            scope:domcom_opposition_war = { set_called_to = scope:domcom_opposition_extra add_attacker = scope:domcom_opposition_extra }
                            scope:domcom_opposition_patron = { change_variable = { name = domcom_opposition_added add = 1 } }
                        }
                    }
                }
            }
            remove_variable = domcom_opposition_war_chance
        }
        remove_variable = domcom_opposition_count
        remove_variable = domcom_opposition_added
    }
}

# Player scope. Silent alternating 2/3 month cadence = average 2.5 months, two opportunities banked per cycle.
domcom_intervention_budget_monthly_effect = {
    if = { limit = { NOT = { has_variable = domcom_intervention_tick } } set_variable = { name = domcom_intervention_tick value = 0 } }
    if = { limit = { NOT = { has_variable = domcom_intervention_phase } } set_variable = { name = domcom_intervention_phase value = 0 } }
    if = { limit = { NOT = { has_variable = domcom_intervention_tokens } } set_variable = { name = domcom_intervention_tokens value = 2 } }
    change_variable = { name = domcom_intervention_tick add = 1 }
    if = {
        limit = { var:domcom_intervention_phase = 0 var:domcom_intervention_tick >= 2 }
        set_variable = { name = domcom_intervention_tokens value = 2 }
        set_variable = { name = domcom_intervention_tick value = 0 }
        set_variable = { name = domcom_intervention_phase value = 1 }
    }
    else_if = {
        limit = { var:domcom_intervention_phase = 1 var:domcom_intervention_tick >= 3 }
        set_variable = { name = domcom_intervention_tokens value = 2 }
        set_variable = { name = domcom_intervention_tick value = 0 }
        set_variable = { name = domcom_intervention_phase value = 0 }
    }
}

domcom_clear_war_board_slots_effect = {
    # Raw/sorted war lists are cleared by the rebuild/sort callers.

    remove_variable = domcom_wb_slot1_war
    remove_variable = domcom_wb_slot1_attacker
    remove_variable = domcom_wb_slot1_defender
    remove_variable = domcom_wb_slot1_score
    remove_variable = domcom_wb_slot1_imbalance
    set_variable = { name = domcom_wb_slot1_side value = 0 }
    set_variable = { name = domcom_wb_slot1_expanded value = 0 }
    clear_variable_list = domcom_wb_slot1_attackers
    clear_variable_list = domcom_wb_slot1_defenders
    remove_variable = domcom_wb_slot2_war
    remove_variable = domcom_wb_slot2_attacker
    remove_variable = domcom_wb_slot2_defender
    remove_variable = domcom_wb_slot2_score
    remove_variable = domcom_wb_slot2_imbalance
    set_variable = { name = domcom_wb_slot2_side value = 0 }
    set_variable = { name = domcom_wb_slot2_expanded value = 0 }
    clear_variable_list = domcom_wb_slot2_attackers
    clear_variable_list = domcom_wb_slot2_defenders
    remove_variable = domcom_wb_slot3_war
    remove_variable = domcom_wb_slot3_attacker
    remove_variable = domcom_wb_slot3_defender
    remove_variable = domcom_wb_slot3_score
    remove_variable = domcom_wb_slot3_imbalance
    set_variable = { name = domcom_wb_slot3_side value = 0 }
    set_variable = { name = domcom_wb_slot3_expanded value = 0 }
    clear_variable_list = domcom_wb_slot3_attackers
    clear_variable_list = domcom_wb_slot3_defenders
    remove_variable = domcom_wb_slot4_war
    remove_variable = domcom_wb_slot4_attacker
    remove_variable = domcom_wb_slot4_defender
    remove_variable = domcom_wb_slot4_score
    remove_variable = domcom_wb_slot4_imbalance
    set_variable = { name = domcom_wb_slot4_side value = 0 }
    set_variable = { name = domcom_wb_slot4_expanded value = 0 }
    clear_variable_list = domcom_wb_slot4_attackers
    clear_variable_list = domcom_wb_slot4_defenders
    remove_variable = domcom_wb_slot5_war
    remove_variable = domcom_wb_slot5_attacker
    remove_variable = domcom_wb_slot5_defender
    remove_variable = domcom_wb_slot5_score
    remove_variable = domcom_wb_slot5_imbalance
    set_variable = { name = domcom_wb_slot5_side value = 0 }
    set_variable = { name = domcom_wb_slot5_expanded value = 0 }
    clear_variable_list = domcom_wb_slot5_attackers
    clear_variable_list = domcom_wb_slot5_defenders
    remove_variable = domcom_wb_slot6_war
    remove_variable = domcom_wb_slot6_attacker
    remove_variable = domcom_wb_slot6_defender
    remove_variable = domcom_wb_slot6_score
    remove_variable = domcom_wb_slot6_imbalance
    set_variable = { name = domcom_wb_slot6_side value = 0 }
    set_variable = { name = domcom_wb_slot6_expanded value = 0 }
    clear_variable_list = domcom_wb_slot6_attackers
    clear_variable_list = domcom_wb_slot6_defenders
}

domcom_wb_store_current_war_in_slot_effect = {
    save_scope_as = domcom_wb_item
    primary_attacker = { save_temporary_scope_as = domcom_wb_pa }
    primary_defender = { save_temporary_scope_as = domcom_wb_pd }
    scope:domcom_wb_player = {
        if = {
            limit = { var:domcom_wb_fill_index = 1 }
            set_variable = { name = domcom_wb_slot1_war value = scope:domcom_wb_item }
            set_variable = { name = domcom_wb_slot1_attacker value = scope:domcom_wb_pa }
            set_variable = { name = domcom_wb_slot1_defender value = scope:domcom_wb_pd }
            set_variable = { name = domcom_wb_slot1_score value = scope:domcom_wb_item.var:domcom_wb_score_snapshot }
            set_variable = { name = domcom_wb_slot1_imbalance value = scope:domcom_wb_item.var:domcom_wb_imbalance }
            scope:domcom_wb_item = {
                every_war_attacker = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot1_attackers target = scope:domcom_wb_member } } }
                every_war_defender = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot1_defenders target = scope:domcom_wb_member } } }
            }
        }
        else_if = {
            limit = { var:domcom_wb_fill_index = 2 }
            set_variable = { name = domcom_wb_slot2_war value = scope:domcom_wb_item }
            set_variable = { name = domcom_wb_slot2_attacker value = scope:domcom_wb_pa }
            set_variable = { name = domcom_wb_slot2_defender value = scope:domcom_wb_pd }
            set_variable = { name = domcom_wb_slot2_score value = scope:domcom_wb_item.var:domcom_wb_score_snapshot }
            set_variable = { name = domcom_wb_slot2_imbalance value = scope:domcom_wb_item.var:domcom_wb_imbalance }
            scope:domcom_wb_item = {
                every_war_attacker = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot2_attackers target = scope:domcom_wb_member } } }
                every_war_defender = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot2_defenders target = scope:domcom_wb_member } } }
            }
        }
        else_if = {
            limit = { var:domcom_wb_fill_index = 3 }
            set_variable = { name = domcom_wb_slot3_war value = scope:domcom_wb_item }
            set_variable = { name = domcom_wb_slot3_attacker value = scope:domcom_wb_pa }
            set_variable = { name = domcom_wb_slot3_defender value = scope:domcom_wb_pd }
            set_variable = { name = domcom_wb_slot3_score value = scope:domcom_wb_item.var:domcom_wb_score_snapshot }
            set_variable = { name = domcom_wb_slot3_imbalance value = scope:domcom_wb_item.var:domcom_wb_imbalance }
            scope:domcom_wb_item = {
                every_war_attacker = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot3_attackers target = scope:domcom_wb_member } } }
                every_war_defender = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot3_defenders target = scope:domcom_wb_member } } }
            }
        }
        else_if = {
            limit = { var:domcom_wb_fill_index = 4 }
            set_variable = { name = domcom_wb_slot4_war value = scope:domcom_wb_item }
            set_variable = { name = domcom_wb_slot4_attacker value = scope:domcom_wb_pa }
            set_variable = { name = domcom_wb_slot4_defender value = scope:domcom_wb_pd }
            set_variable = { name = domcom_wb_slot4_score value = scope:domcom_wb_item.var:domcom_wb_score_snapshot }
            set_variable = { name = domcom_wb_slot4_imbalance value = scope:domcom_wb_item.var:domcom_wb_imbalance }
            scope:domcom_wb_item = {
                every_war_attacker = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot4_attackers target = scope:domcom_wb_member } } }
                every_war_defender = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot4_defenders target = scope:domcom_wb_member } } }
            }
        }
        else_if = {
            limit = { var:domcom_wb_fill_index = 5 }
            set_variable = { name = domcom_wb_slot5_war value = scope:domcom_wb_item }
            set_variable = { name = domcom_wb_slot5_attacker value = scope:domcom_wb_pa }
            set_variable = { name = domcom_wb_slot5_defender value = scope:domcom_wb_pd }
            set_variable = { name = domcom_wb_slot5_score value = scope:domcom_wb_item.var:domcom_wb_score_snapshot }
            set_variable = { name = domcom_wb_slot5_imbalance value = scope:domcom_wb_item.var:domcom_wb_imbalance }
            scope:domcom_wb_item = {
                every_war_attacker = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot5_attackers target = scope:domcom_wb_member } } }
                every_war_defender = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot5_defenders target = scope:domcom_wb_member } } }
            }
        }
        else_if = {
            limit = { var:domcom_wb_fill_index = 6 }
            set_variable = { name = domcom_wb_slot6_war value = scope:domcom_wb_item }
            set_variable = { name = domcom_wb_slot6_attacker value = scope:domcom_wb_pa }
            set_variable = { name = domcom_wb_slot6_defender value = scope:domcom_wb_pd }
            set_variable = { name = domcom_wb_slot6_score value = scope:domcom_wb_item.var:domcom_wb_score_snapshot }
            set_variable = { name = domcom_wb_slot6_imbalance value = scope:domcom_wb_item.var:domcom_wb_imbalance }
            scope:domcom_wb_item = {
                every_war_attacker = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot6_attackers target = scope:domcom_wb_member } } }
                every_war_defender = { save_temporary_scope_as = domcom_wb_member scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_slot6_defenders target = scope:domcom_wb_member } } }
            }
        }
    }
}

domcom_rebuild_war_browser_effect = {
    clear_variable_list = domcom_wb_wars_raw
    clear_variable_list = domcom_wb_wars
    save_scope_as = domcom_wb_player
    if = { limit = { NOT = { has_variable = domcom_wb_sort_mode } } set_variable = { name = domcom_wb_sort_mode value = flag:score } }
    if = { limit = { NOT = { has_variable = domcom_wb_sort_reverse } } set_variable = { name = domcom_wb_sort_reverse value = 0 } }
    every_independent_ruler = {
        limit = { is_alive = yes is_at_war = yes NOT = { this = scope:domcom_wb_player } in_diplomatic_range = scope:domcom_wb_player }
        save_temporary_scope_as = domcom_wb_anchor
        every_character_war = {
            limit = {
                primary_attacker = scope:domcom_wb_anchor
                NOT = { any_war_attacker = { this = scope:domcom_wb_player } }
                NOT = { any_war_defender = { this = scope:domcom_wb_player } }
            }
            save_temporary_scope_as = domcom_wb_war
            set_variable = { name = domcom_wb_score_snapshot value = attacker_war_score }
            set_variable = { name = domcom_wb_closeness_snapshot value = attacker_war_score }
            if = { limit = { var:domcom_wb_closeness_snapshot < 0 } change_variable = { name = domcom_wb_closeness_snapshot multiply = -1 } }
            primary_attacker = { save_temporary_scope_as = domcom_wb_pa }
            primary_defender = { save_temporary_scope_as = domcom_wb_pd }
            set_variable = { name = domcom_wb_imbalance value = scope:domcom_wb_pa.current_military_strength }
            change_variable = { name = domcom_wb_imbalance subtract = scope:domcom_wb_pd.current_military_strength }
            if = { limit = { var:domcom_wb_imbalance < 0 } change_variable = { name = domcom_wb_imbalance multiply = -1 } }
            scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_wars_raw target = scope:domcom_wb_war } }
        }
    }
    domcom_sort_war_browser_effect = yes
}


domcom_sort_war_browser_effect = {
    clear_variable_list = domcom_wb_wars
    save_scope_as = domcom_wb_player
    if = {
        limit = { var:domcom_wb_sort_mode = flag:closest }
        ordered_in_list = { variable = domcom_wb_wars_raw order_by = var:domcom_wb_closeness_snapshot max = 100 check_range_bounds = no save_temporary_scope_as = domcom_wb_item scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_wars target = scope:domcom_wb_item } } }
    }
    else_if = {
        limit = { var:domcom_wb_sort_mode = flag:imbalance }
        if = { limit = { var:domcom_wb_sort_reverse = 0 } ordered_in_list = { variable = domcom_wb_wars_raw order_by = { value = var:domcom_wb_imbalance multiply = -1 } max = 100 check_range_bounds = no save_temporary_scope_as = domcom_wb_item scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_wars target = scope:domcom_wb_item } } } }
        else = { ordered_in_list = { variable = domcom_wb_wars_raw order_by = var:domcom_wb_imbalance max = 100 check_range_bounds = no save_temporary_scope_as = domcom_wb_item scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_wars target = scope:domcom_wb_item } } } }
    }
    else = {
        if = { limit = { var:domcom_wb_sort_reverse = 0 } ordered_in_list = { variable = domcom_wb_wars_raw order_by = var:domcom_wb_score_snapshot max = 100 check_range_bounds = no save_temporary_scope_as = domcom_wb_item scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_wars target = scope:domcom_wb_item } } } }
        else = { ordered_in_list = { variable = domcom_wb_wars_raw order_by = { value = var:domcom_wb_score_snapshot multiply = -1 } max = 100 check_range_bounds = no save_temporary_scope_as = domcom_wb_item scope:domcom_wb_player = { add_to_variable_list = { name = domcom_wb_wars target = scope:domcom_wb_item } } } }
    }
    domcom_clear_war_board_slots_effect = yes
    set_variable = { name = domcom_wb_fill_index value = 0 }
    every_in_list = {
        variable = domcom_wb_wars
        limit = { scope:domcom_wb_player = { var:domcom_wb_fill_index < 6 } }
        save_temporary_scope_as = domcom_wb_item
        scope:domcom_wb_player = { change_variable = { name = domcom_wb_fill_index add = 1 } }
        domcom_wb_store_current_war_in_slot_effect = yes
    }
}

domcom_wb_join_selected_effect = {
    save_scope_as = domcom_wb_player
    if = {
        limit = { has_variable = domcom_wb_slot1_war var:domcom_wb_slot1_side > 0 }
        var:domcom_wb_slot1_war = {
            save_scope_as = domcom_wb_war
            primary_attacker = { save_scope_as = domcom_wb_attacker }
            primary_defender = { save_scope_as = domcom_wb_defender }
            if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot1_side = 1 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_attacker } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_warhound_small_effect = yes }
                }
            }
            else_if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot1_side = 2 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_defender } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_champion_small_effect = yes }
                }
            }
        }
    }
    if = {
        limit = { has_variable = domcom_wb_slot2_war var:domcom_wb_slot2_side > 0 }
        var:domcom_wb_slot2_war = {
            save_scope_as = domcom_wb_war
            primary_attacker = { save_scope_as = domcom_wb_attacker }
            primary_defender = { save_scope_as = domcom_wb_defender }
            if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot2_side = 1 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_attacker } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_warhound_small_effect = yes }
                }
            }
            else_if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot2_side = 2 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_defender } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_champion_small_effect = yes }
                }
            }
        }
    }
    if = {
        limit = { has_variable = domcom_wb_slot3_war var:domcom_wb_slot3_side > 0 }
        var:domcom_wb_slot3_war = {
            save_scope_as = domcom_wb_war
            primary_attacker = { save_scope_as = domcom_wb_attacker }
            primary_defender = { save_scope_as = domcom_wb_defender }
            if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot3_side = 1 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_attacker } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_warhound_small_effect = yes }
                }
            }
            else_if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot3_side = 2 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_defender } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_champion_small_effect = yes }
                }
            }
        }
    }
    if = {
        limit = { has_variable = domcom_wb_slot4_war var:domcom_wb_slot4_side > 0 }
        var:domcom_wb_slot4_war = {
            save_scope_as = domcom_wb_war
            primary_attacker = { save_scope_as = domcom_wb_attacker }
            primary_defender = { save_scope_as = domcom_wb_defender }
            if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot4_side = 1 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_attacker } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_warhound_small_effect = yes }
                }
            }
            else_if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot4_side = 2 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_defender } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_champion_small_effect = yes }
                }
            }
        }
    }
    if = {
        limit = { has_variable = domcom_wb_slot5_war var:domcom_wb_slot5_side > 0 }
        var:domcom_wb_slot5_war = {
            save_scope_as = domcom_wb_war
            primary_attacker = { save_scope_as = domcom_wb_attacker }
            primary_defender = { save_scope_as = domcom_wb_defender }
            if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot5_side = 1 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_attacker } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_warhound_small_effect = yes }
                }
            }
            else_if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot5_side = 2 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_defender } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_champion_small_effect = yes }
                }
            }
        }
    }
    if = {
        limit = { has_variable = domcom_wb_slot6_war var:domcom_wb_slot6_side > 0 }
        var:domcom_wb_slot6_war = {
            save_scope_as = domcom_wb_war
            primary_attacker = { save_scope_as = domcom_wb_attacker }
            primary_defender = { save_scope_as = domcom_wb_defender }
            if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot6_side = 1 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_attacker } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_attacker = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_warhound_small_effect = yes }
                }
            }
            else_if = {
                limit = { scope:domcom_wb_player = { var:domcom_wb_slot6_side = 2 } }
                if = {
                    limit = { scope:domcom_wb_player = { is_allied_to = scope:domcom_wb_defender } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                }
                else_if = {
                    limit = { scope:domcom_wb_player = { has_variable = domcom_intervention_tokens var:domcom_intervention_tokens > 0 } }
                    set_called_to = scope:domcom_wb_player
                    add_defender = scope:domcom_wb_player
                    scope:domcom_wb_player = { change_variable = { name = domcom_intervention_tokens subtract = 1 } domcom_rep_gain_champion_small_effect = yes }
                }
            }
        }
    }
    domcom_rebuild_war_browser_effect = yes
}
