﻿wld_is_loaded = { always = yes }

# NOTE: This file begins with special characters for compatibility with the "More Single Combats" mod.

##############################################################################
# Code triggers
##############################################################################

can_be_commander_basic_trigger = {
    wld_can_be_commander_basic_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
}

can_be_commander_now_trigger = {
    # WLD check
    wld_can_be_commander_now_trigger = { ARMY_OWNER = $ARMY_OWNER$ }

    can_be_commander_basic_trigger = { ARMY_OWNER = $ARMY_OWNER$ }

    is_imprisoned = no
    custom_description = {
        text = ALREADY_IN_ACTIVITY
        NOR = {
            exists = involved_activity
            has_variable = homage_liege_scope
            has_character_flag = meditation_character_flag
            has_character_flag = petition_liege_character_flag
            has_character_flag = holding_court_character_flag
            is_being_visited_on_tour_strict = yes
        }
    }

    # PoW Compat
    trigger_if = {
        limit = { PoW_is_loaded = yes }
        PoW_can_be_commander_now_trigger = yes
    }
    trigger_else = {
        is_travelling = no
    }

    # MSC Compat
    trigger_if = {
        limit = { msc_is_loaded = yes }
        NOT = { has_character_modifier = msc_captured }
    }
}

# AGOT Compat
wld_agot_can_be_warrior_trigger_no_dragon = {
	wld_warrior_age_check = yes
	NOT = { has_trait = maester }
	OR = {
		can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
		AND = {
			$ARMY_OWNER$.culture = {
				has_cultural_parameter = high_prowess_ignores_knight_restrictions
			}
			prowess >= 12
		}
		has_trait = education_martial_prowess
	}
}

can_be_warrior_trigger = {
    # AGOT compat
    trigger_if = {
        limit = { wld_agot_is_loaded = yes }
        is_imprisoned = no
        NOT = { has_trait = incapable }
        NOT = { has_trait = ruin }
        NOT = { has_trait = dragon }
        OR = {
            is_current_dragonrider_warfare = yes # Dragonriders can always fight
            wld_agot_can_be_warrior_trigger_no_dragon = { ARMY_OWNER = $ARMY_OWNER$ } # Non-dragonriders can fight if they meet the requirements
        }
    }
    trigger_else = {
        # WLD check (replaces is_adult)
        wld_warrior_age_check = yes

        is_imprisoned = no
        NOT = { has_trait = incapable }
        OR = {
            can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
            AND = {
                $ARMY_OWNER$.culture = {
                    has_cultural_parameter = high_prowess_ignores_knight_restrictions
                }
                prowess >= 10
            }
        }
    }
}

can_be_knight_trigger = {
    # PoW compat
    trigger_if = { limit = { PoW_is_loaded = yes } PoW_can_be_knight_trigger = yes }

    # KM Compat
    trigger_if = { limit = { KM_is_loaded = yes } KM_can_be_knight_trigger = { ARMY_OWNER = $ARMY_OWNER$ } }

    # WLD Check
    wld_can_be_knight_trigger = { ARMY_OWNER = $ARMY_OWNER$ }

    is_hostage = no
    trigger_if = { # Admin governors cannot be knights
        limit = {
            $ARMY_OWNER$ = { government_allows = administrative }
            is_courtier = no
        }
        primary_title ?= {
            tier < tier_duchy
            trigger_if = {
                limit = { is_noble_family_title = yes }
                always = no
            }
        }
    }
    trigger_if = {
        limit = {
            $ARMY_OWNER$.culture = {
                has_cultural_parameter = minimum_prowess_for_knights
            }
        }
        prowess >= 12
    }
    can_be_warrior_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
    trigger_if = {
        limit = {
            OR = {
                has_trait = devoted
                is_clergy = yes
            }
        }
        OR = {
            faith = { has_doctrine_parameter = clergy_can_fight }
            culture = { has_cultural_parameter = culture_clergy_can_fight }
            AND = {
                $ARMY_OWNER$.culture = {
                    has_cultural_parameter = high_prowess_ignores_knight_restrictions
                }
                prowess >= 10
            }
        }
    }
    OR = {
        # AGOT Compat
        trigger_if = {
            limit = { wld_agot_is_loaded = yes }
            has_trait = education_martial_prowess
            AND = {
                $ARMY_OWNER$.culture = {
                    has_cultural_parameter = high_prowess_ignores_knight_restrictions
                }
                prowess >= 12
            }
        }
        trigger_else = {
            OR = {
                # MSC Compat
                trigger_if = {
                    limit = { msc_is_loaded = yes }
                    has_character_modifier = msc_captured
                }

                AND = {
                    $ARMY_OWNER$.culture = {
                        has_cultural_parameter = high_prowess_ignores_knight_restrictions
                    }
                    prowess >= 10
                }
            }
        }

        has_trait = order_member # Order Members will fight for their faith even if their faith says no
        NOR = {
            has_trait = blind
            has_court_position = master_assassin_court_position #FP3 addition
        }
    }
    trigger_if = {
        limit = {
            exists = liege.diarch
        }
        NOT = { this = liege.diarch }
    }

    # AGOT Compat
    trigger_if = {
        limit = { wld_agot_is_loaded = yes }
        OR = {
            is_ai = yes
            AND = {
                NOT = { has_character_flag = cannot_be_knight_and_commander }
                is_travelling = no
                NOT = { exists = involved_activity }
            }
        }
    }
    trigger_else = {
        is_ai = yes
    }
}

##############################################################################
# Script triggers
##############################################################################

wld_is_tier_lte_game_rule = {
    trigger_if = {
        limit = { has_game_rule = wld_rule_commanders_allowed_t0 }
        wld_is_tier_lte = {
            WLD_TIER = 0
            ARMY_OWNER = $ARMY_OWNER$
        }
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_allowed_t1 }
        wld_is_tier_lte = {
            WLD_TIER = 1
            ARMY_OWNER = $ARMY_OWNER$
        }
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_allowed_t2 }
        wld_is_tier_lte = {
            WLD_TIER = 2
            ARMY_OWNER = $ARMY_OWNER$
        }
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_allowed_t3 }
        wld_is_tier_lte = {
            WLD_TIER = 3
            ARMY_OWNER = $ARMY_OWNER$
        }
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_allowed_t4 }
        wld_is_tier_lte = {
            WLD_TIER = 4
            ARMY_OWNER = $ARMY_OWNER$
        }
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_allowed_t5 }
        wld_is_tier_lte = {
            WLD_TIER = 5
            ARMY_OWNER = $ARMY_OWNER$
        }
    }
    trigger_else = {
        always = yes
    }
}

wld_is_tier_lte = {
    OR = {
        # Ruler / diarch / captain
        trigger_if = {
            limit = { $WLD_TIER$ >= 0}
            OR = {
                $ARMY_OWNER$ = {
                    OR = {
                        root = this
                        root = this.diarch
                    }
                }
                AND = {
                    has_game_rule = wld_rule_mercenaries_can_command_yes
                    exists = primary_title
                    OR = {
                        primary_title = { is_holy_order = yes }
                        primary_title = { is_mercenary_company = yes }
                    }
                }
            }
        }
        # Close family
        trigger_if = {
            limit = { $WLD_TIER$ >= 1 }
            is_close_family_of = $ARMY_OWNER$
        }
        # Extended family
        trigger_if = {
            limit = { $WLD_TIER$ >= 2 }
            is_close_or_extended_family_of = $ARMY_OWNER$
        }
        # Friends
        trigger_if = {
            limit = { $WLD_TIER$ >= 3 }
            has_relation_friend = $ARMY_OWNER$
        }
        # Powerful vassals
        trigger_if = {
            limit = { $WLD_TIER$ >= 4 }
            is_powerful_vassal_of = $ARMY_OWNER$
        }
        # Anybody
        trigger_if = {
            limit = { $WLD_TIER$ >= 5 }
            always = yes
        }
    }
}

wld_is_excluded_government_type = {
    OR = {
        $ARMY_OWNER$ = { government_has_flag = government_is_republic }
        $ARMY_OWNER$ = { government_has_flag = government_is_theocracy }
        AND  = {
            has_game_rule = wld_rule_exclude_administrative_yes
            $ARMY_OWNER$ = { government_has_flag = government_is_administrative }
        }
    }
}

wld_commander_age_check = {
    trigger_if = {
        limit = { has_game_rule = wld_rule_commanders_age_10 }
        age >= 10
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_age_11 }
        age >= 11
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_age_12 }
        age >= 12
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_age_13 }
        age >= 13
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_age_14 }
        age >= 14
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_commanders_age_15 }
        age >= 15
    }
    trigger_else = {
        is_adult = yes
    }
}

wld_can_be_commander_basic_trigger = {
    # Vanilla
    is_alive = yes
    is_hostage = no
    NOR = {
        has_trait = incapable
        AND = {
            OR = {
                has_trait = devoted
                is_clergy = yes
            }
            NOR = {
                has_trait = order_member # Order Members will fight for their faith even if their faith says no
                faith = { has_doctrine_parameter = clergy_can_fight }
                culture = { has_cultural_parameter = culture_clergy_can_fight }
            }
        }

        # Vanilla AGOT Compat
        trigger_if = {
            limit = { wld_agot_is_loaded = yes }
            has_character_flag = agot_is_at_unknown_place
            has_trait = maester
            NOT = { is_human = yes } # TT error if trigger not formatted this way
        }
    }

    # AGOT compat
    trigger_if = {
        limit = { wld_agot_is_loaded = yes }
        OR = {
            is_ai = yes
            AND = {
                OR = {
                    this = $ARMY_OWNER$
                    NOT = { has_character_flag = cannot_be_knight_and_commander }
                }
                is_travelling = no
                NOT = { exists = involved_activity }
            }
        }
    }
    trigger_else = {
        # WLD: Player can command AI armies
        always = yes
    }

    # AGOT Compat
    trigger_if = {
        limit = { wld_agot_is_loaded = yes }
        OR = {
            wld_commander_age_check = yes
            AND = {
                age >= 14
                is_current_dragonrider_warfare = yes
            }
        }
    }
    trigger_else = {
        wld_commander_age_check = yes
    }

    # WLD gender check
    OR = {
        this = $ARMY_OWNER$
        can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = $ARMY_OWNER$ }

        # WLD: Diarchs & rulers can always lead
        this = $ARMY_OWNER$.diarch
        is_ruler = yes

        # AGOT Compat
        trigger_if = {
            limit = { wld_agot_is_loaded = yes }
            OR = {
                has_trait = education_martial_prowess
                is_current_dragonrider_warfare = yes
            }
        }
    }

    # WLD check
    OR = {
        # NOTE: If this OR is changed, then the "Marshal eligibility" trigger limit needs to be updated as well
        wld_is_excluded_government_type = { ARMY_OWNER = $ARMY_OWNER$ }
        wld_is_tier_lte_game_rule = { ARMY_OWNER = $ARMY_OWNER$ }
        trigger_if = {
            limit = { NOT = { has_game_rule = wld_rule_marshal_can_command_never } }
            $ARMY_OWNER$ = {
                exists = cp:councillor_marshal
                cp:councillor_marshal = prev
            }
        }
    }
}

wld_can_be_commander_now_trigger = {
    # Don't allow vassal commanders at war to lead
    trigger_if = {
        limit = {
            this != $ARMY_OWNER$
            # Allow diarchs to be assigned as liege's commander even if at war
            this != $ARMY_OWNER$.diarch
            is_ruler = yes
        }
        custom_description = {
            text = wld_at_war_trigger_loc
            # NOTE: is_at_war does not consider liege's wars, which is good.
            is_at_war = no
        }
    }

    # Marshal eligibility check
    trigger_if = {
        limit = {
            # Needs to match the OR from wld_can_be_commander_basic_trigger
            NOR = {
                wld_is_excluded_government_type = { ARMY_OWNER = $ARMY_OWNER$ }
                wld_is_tier_lte_game_rule = { ARMY_OWNER = $ARMY_OWNER$ }
            }
            $ARMY_OWNER$ = {
                exists = cp:councillor_marshal
                cp:councillor_marshal = prev
            }
        }
        
        trigger_if = {
            limit = { has_game_rule = wld_rule_marshal_can_command_any }
            always = yes
        }
        trigger_else_if = {
            limit = { has_game_rule = wld_rule_marshal_can_command_powerful_vassal }
            custom_description = {
                text = wld_marshal_powerful_vassal_trigger_loc
                is_powerful_vassal_of = $ARMY_OWNER$
            }
        }
        trigger_else_if = {
            limit = { has_game_rule = wld_rule_marshal_can_command_vassal }
            custom_description = {
                text = wld_marshal_vassal_trigger_loc
                is_vassal_of = $ARMY_OWNER$
            }
        }
        trigger_else = {
            always = no
        }
    }
}

wld_warrior_age_check = {
    # Knight age check
    trigger_if = {
        limit = { has_game_rule = wld_rule_knights_age_10 }
        age >= 10
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_knights_age_11 }
        age >= 11
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_knights_age_12 }
        age >= 12
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_knights_age_13 }
        age >= 13
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_knights_age_14 }
        age >= 14
    }
    trigger_else_if = {
        limit = { has_game_rule = wld_rule_knights_age_15 }
        age >= 15
    }
    trigger_else = {
        is_adult = yes
    }
}

wld_can_be_knight_trigger = {
    trigger_if = {
        limit = {
            this != $ARMY_OWNER$
            is_ruler = yes
        }
        custom_description = {
            text = wld_at_war_trigger_loc
            # NOTE: is_at_war does not consider liege's wars, which is good.
            is_at_war = no
        }
    }
    trigger_else = {
        always = yes
    }

    is_commanding_army = no
}
