namespace = gbf_event

# 满足条件，触发绰号“不败者”事件
gbf_event.0001 = {

    hidden = yes
    scope = combat_side

    trigger = {
		exists = side_commander

		side_commander = {
		    AND = {
		        is_alive = yes
		        is_ai = no # 只计算玩家，节省性能消耗

		        has_trait_xp = {
                    trait = gbf_commander
                    value >= 90
                }

                NOT = { has_character_flag = gbf_undefeatable_flag } # 对一个玩家只触发一次
		    }
		}
	}

	immediate = {
	    side_commander = {
			# If there is an enemy commander, save their scope for portraits/localization in the following event.
			if = {
				limit = {
					exists = root.enemy_side.side_commander
				}
				root.enemy_side.side_commander = {
					save_scope_as = enemy_commander
				}
			}

			# Fire the event which gives the victorious commander the nickname 'the Undefeatable'.
			trigger_event = {
				id = combat_event.0003
				days = 1
			}

            # 添加“触发过”标志，确保下次不再触发
			add_character_flag = gbf_undefeatable_flag

            # 确保不触发原版ck3的“不败者”绰号事件
			set_variable = {
				name = combat_event_0001_tracker
				value = 0
            }
		}
	}

}

# 打赢战斗后玩家指挥官指挥官特质经验，保底获得1xp
gbf_event.0002 = {

    hidden = yes
    scope = combat_side

    trigger = {
		exists = side_commander
		side_commander = {
			is_alive = yes
			is_ai = no  # 只计算玩家，节省性能消耗
		}
		OR = {
			NOT = { side_commander = {has_trait = gbf_commander}}
			side_commander = {
				has_trait = gbf_commander
				has_trait_xp = {
                    trait = gbf_commander
                    value < 100
                }
			}
		}
	}

	immediate = {
		combat.location = { save_scope_as = battle_province }
	    side_commander = {
	        if = {
		        limit = { has_trait = gbf_commander }

                send_interface_message = {
                    type = gbf_win_combat
                    title = gbf_win_battle_title
                    desc = gbf_win_battle_desc
                    left_icon = root.side_commander
                    right_icon = root.enemy_side.side_commander

                    add_trait_xp = {
                        trait = gbf_commander
                        value = {
                            value = 0
                            add = root.enemy_side.side_max_army_size
                            #add = root.side_max_army_size
                            divide = 8000 # 约莫5,6k人增长一点经验
                            min = 1
                            max = 7
                        }
                    }

                }

		    }
		    else = {
		        add_trait = gbf_commander
		    }
	    }

		#BattleSummaryWindow.GetKnightKills( BattleEvent.GetRightCharacter( BattleSummaryWindow.IsPlayerAttacker ) )|0]
	}
}

# 触发获得各类的将领特质事件
# 将领特质：logistician military_engineer aggressive_attacker unyielding_defender forder flexible_leader desert_warrior jungle_stalker
# reaver reckless holy_warrior open_terrain_expert rough_terrain_expert forest_fighter cautious_leader organizer winter_soldier
gbf_event.0003 = {

    hidden = yes
    scope = combat_side
    trigger = {
		exists = side_commander
		side_commander = {
		    AND = {
		        is_alive = yes
		        is_ai = no # 只计算玩家，节省性能消耗

		        has_trait_xp = {
                    trait = gbf_commander
                    value >= 75
                }
		    }
		}
	}

	immediate = {
	    side_commander = {
	        trigger_event = {
				id = gbf_event.0101
			}
		}
	}

}

# 随机获得将领特质
gbf_event.0101 = {

    type = character_event
	title = gbf_event.0101.t
	desc = gbf_event.0101.desc
	theme = battle
	left_portrait = {
		character = root
		animation = war_over_win
	}
	
	option = {
	    name = gbf_event.0101.option.a
		hidden_effect = {
			random_list = {
				200 = {}

				50 = {
					trigger = { NOT = { has_trait = logistician } }
					add_trait = logistician
				}
				50 = {
					trigger = { NOT = { has_trait = military_engineer } }
					add_trait = military_engineer
				}
				50 = {
					trigger = { NOT = { has_trait = aggressive_attacker } }
					add_trait = aggressive_attacker
				}
				50 = {
					trigger = { NOT = { has_trait = unyielding_defender } }
					add_trait = unyielding_defender
				}
				50 = {
					trigger = { NOT = { has_trait = forder } }
					add_trait = forder
				}
				50 = {
					trigger = { NOT = { has_trait = flexible_leader } }
					add_trait = flexible_leader
				}
				50 = {
					trigger = { NOT = { has_trait = desert_warrior } }
					add_trait = desert_warrior
				}
				50 = {
					trigger = { NOT = { has_trait = jungle_stalker } }
					add_trait = jungle_stalker
				}
				50 = {
					trigger = { NOT = { has_trait = reaver } }
					add_trait = reaver
				}
				50 = {
					trigger = { NOT = { has_trait = reckless } }
					add_trait = reckless
				}
				50 = {
					trigger = { NOT = { has_trait = holy_warrior } }
					add_trait = holy_warrior
				}
				50 = {
					trigger = { NOT = { has_trait = open_terrain_expert } }
					add_trait = open_terrain_expert
				}
				50 = {
					trigger = { NOT = { has_trait = rough_terrain_expert } }
					add_trait = rough_terrain_expert
				}
				50 = {
					trigger = { NOT = { has_trait = forest_fighter } }
					add_trait = forest_fighter
				}
				50 = {
					trigger = { NOT = { has_trait = cautious_leader } }
					add_trait = cautious_leader
				}
				50 = {
					trigger = { NOT = { has_trait = organizer } }
					add_trait = organizer
				}
				50 = {
					trigger = { NOT = { has_trait = winter_soldier } }
					add_trait = winter_soldier
				}
			}
		}

		custom_tooltip = gbf_event.0101.a.tt
	}

	option = {
	    name = gbf_event.0101.option.b
        add_gold = 100
	}

	option = {
	    name = gbf_event.0101.option.c
	    random_list = {
			1 = { add_martial_skill = 1 }
			1 = {}
		}
	}
}

# 战斗后，骑士获得战斗骑士特质经验
gbf_event.0004 = {
    hidden = yes
    scope = combat_side

	trigger = {
		has_game_rule = gbf_enable_knight_trait
	}

	immediate = {
		every_side_knight = {
			if = {
				limit = { not = { has_trait = gbf_knight }}
				add_trait = gbf_knight
			}
			add_trait_xp = {
				trait = gbf_knight
				value = 1
			}
		}
	}
}

# 骑士获得或升级一个勇士特质

scripted_trigger has_warrior_trait = {
	or = {
		has_trait = education_martial_prowess_1
		has_trait = education_martial_prowess_2
		has_trait = education_martial_prowess_3
		has_trait = education_martial_prowess_4
		has_trait = education_martial_prowess_5
	}
}

scripted_effect delete_and_add_new_warrior_trait = {
	if = {
		limit = { has_trait = education_martial_prowess_1 }
		remove_trait = education_martial_prowess_1
		add_trait = education_martial_prowess_2
	}
	else_if = {
		limit = { has_trait = education_martial_prowess_2 }
		remove_trait = education_martial_prowess_2
		add_trait = education_martial_prowess_3
	}
	else_if = {
		limit = { has_trait = education_martial_prowess_3 }
		remove_trait = education_martial_prowess_3
		add_trait = education_martial_prowess_4
	}
	else_if = {
		limit = { has_trait = education_martial_prowess_4 }
		remove_trait = education_martial_prowess_4
		add_trait = education_martial_prowess_5
	}
}

gbf_event.0005 = {
	hidden = yes
    scope = combat_side

	immediate = {
		random_side_knight = {
			limit = { prowess > 12 }
			if = {
				limit = { has_warrior_trait = no }
				add_trait = education_martial_prowess_1
			}
			else = {
				delete_and_add_new_warrior_trait = yes
			}
		}
	}
}
