﻿on_war_started = {
	on_actions = {
		protect_domain_on_war_start_on_action
		loaa_mercenary_promise_on_action
	}
}

protect_domain_on_war_start_on_action = {
	effect = {
		scope:defender ?= {
			if = {
				limit = {
					var:protect_domain_adventurer ?= {
						is_alive = yes
					}
				}
				scope:war = {
					hidden_effect = { set_called_to = scope:defender.var:protect_domain_adventurer }
					add_defender = scope:defender.var:protect_domain_adventurer
				}
			}
		}
		scope:attacker ?= {
			if = {
				limit = {
					var:protect_domain_adventurer ?= {
						is_alive = yes
					}
				}
				scope:war = {
					hidden_effect = { set_called_to = scope:attacker.var:protect_domain_adventurer }
					add_attacker = scope:attacker.var:protect_domain_adventurer
				}
			}
		}
	}
}

on_join_war_as_secondary = {
	on_actions = {
		loaa_join_war_on_action
		loaa_mercenary_promise_on_action
	}
}

loaa_join_war_on_action = {
	trigger = {
		scope:war_joiner = { is_landless_adventurer = yes }
	}
	effect = {
		scope:war_joiner = {
			if = {
				limit = {
					any_character_active_contract = {
						has_task_contract_type = loaa_protect_domain
						save_temporary_scope_as = contract
					}
				}
			}
            if = {
                limit = {
                    exists = scope:contract
                    has_character_flag = joined_as_mercenary
                 }
                 remove_character_flag = joined_as_mercenary
            }
			scope:contract ?= {
				if = {
					limit = {
						OR = {
							NOT = { has_variable = protect_domain_wars }
							NOT = { any_in_list = { variable = protect_domain_wars this = scope:war } }
						}
						scope:war = {
							any_war_participant = {
								scope:contract = { task_contract_target = prev }
								NOT = { is_at_war_with = scope:war_joiner }
							}
						}
					}
					add_to_variable_list = {
						name = protect_domain_wars
						target = scope:war
					}
				}
				else_if = {
					limit = {
						scope:war = {
							any_war_participant = {
								scope:contract = { task_contract_target = prev }
								is_at_war_with = scope:war_joiner
							}
						}
					}
					save_scope_value_as = {
						name = task_contract_outcome
						value = flag:failure
					}
					save_scope_value_as = {
						name = task_contract_betrayal
						value = flag:yes
					}
					save_scope_as = task_contract
					task_contract_taker = { trigger_event = loaa_contract_event.9001 }
				}
			}
		}
	}
}

loaa_mercenary_promise_on_action = {
	trigger = {
		OR = {
			scope:war_joiner ?= {
				is_landless_adventurer = yes
				has_variable = loaa_war_promise
			}
			scope:attacker ?= {
				is_landless_adventurer = yes
				has_variable = loaa_war_promise
			}
			scope:defender ?= {
				is_landless_adventurer = yes
				has_variable = loaa_war_promise
			}
		}
	}
	effect = {
		scope:war_joiner ?= {
			if = {
				limit = {
					is_landless_adventurer = yes
					has_variable = loaa_war_promise
				}
				remove_variable = loaa_war_promise
			}
		}
		scope:attacker ?= {
			if = {
				limit = {
					is_landless_adventurer = yes
					has_variable = loaa_war_promise
				}
				remove_variable = loaa_war_promise
			}
		}
		scope:defender ?= {
			if = {
				limit = {
					is_landless_adventurer = yes
					has_variable = loaa_war_promise
				}
				remove_variable = loaa_war_promise
			}
		}
	}
}

on_war_won_defender = {
	on_actions = {
        loaa_on_war_end_on_action
		loaa_faction_war_on_action
	}
}

on_war_won_attacker = {
	on_actions = {
        loaa_on_war_end_on_action
		loaa_faction_war_on_action
	}
}

on_war_white_peace = {
    on_actions = {
        loaa_on_war_end_on_action
		loaa_faction_war_on_action
	}
}

on_war_invalidated = {
	on_actions = {
        loaa_on_war_end_on_action
		loaa_faction_war_on_action
	}
}

loaa_on_war_end_on_action = {
    effect ={
        scope:war ?= {
            random_war_participant = {
                limit = {
                    is_landless_adventurer = yes
                    any_character_active_contract = {
                        has_task_contract_type = loaa_protect_domain
                        has_variable_list = protect_domain_wars
                        any_in_list = {
                            variable = protect_domain_wars
                            this = scope:war
                        }
                    }
                }
                save_scope_as = participant
            }
            scope:participant ?= {
                random_character_active_contract = {
                    limit = {
                        has_task_contract_type = loaa_protect_domain
                        has_variable_list = protect_domain_wars
                        any_in_list = {
                            variable = protect_domain_wars
                            this = scope:war
                        }
                    }
                     save_scope_as = task_contract
                }
            }
            scope:task_contract ?= {
                if = {
                    limit = {
                        NOT = { has_variable = loaa_finished_wars }
                    }
                    set_variable = {
                        name = loaa_finished_wars
                        value = 1
                    }
                    set_variable = {
                        name = loaa_total_warscore
                        value ="scope:war.war_contribution(scope:participant)"
                    }
					set_variable = {
						name = gold_success_standard
						value = loaa_protect_domain_final_payment_value
					}
                }
                else  = {
                    set_variable = {
                        name = loaa_finished_wars
                        value = {
                            value = var:loaa_finished_wars
                            add = 1
                        }
                    }
                    set_variable = {
                        name = loaa_total_warscore
                        value = {
                            value = var:loaa_total_warscore
                            add = "scope:war.war_contribution(scope:participant)"
                        }
                    }
					set_variable = {
						name = gold_success_standard
						value = loaa_protect_domain_final_payment_value
					}
                }
            }
        }
    }
}

on_faction_demand_accepted = {
	on_actions = {
		loaa_faction_on_action
	}
}

loaa_faction_on_action = {
	effect = {
		# Complete a task contract
		if = {
			limit = {
				scope:faction ?= {
					any_faction_member = {
						is_landless_adventurer = yes
						any_character_active_contract = {
							has_task_contract_type = loaa_laamp_join_faction_contract
							var:task_contract_faction = scope:faction
						}
					}
				}
			}
			scope:faction = {
				every_faction_member = {
					every_character_active_contract = {
						limit = {
							has_task_contract_type = loaa_laamp_join_faction_contract
							var:task_contract_faction = scope:faction
						}
						complete_task_contract = success_standard
					}
				}
			}
		}
	}
}

loaa_faction_war_on_action = {
	#Join War Contract and Help Claimant Contract
	effect = {
		scope:war = {
			if = {
				limit = {
					using_civil_war_cb_trigger = yes
					any_war_participant = {
						any_character_active_contract = {
							has_task_contract_type = loaa_laamp_join_faction_contract
							task_contract_target = {
								is_participant_in_war = scope:war
							}
						}
					}
				}
				every_war_participant = {
					every_character_active_contract = {
						limit = {
							has_task_contract_type = loaa_laamp_join_faction_contract
							task_contract_target = {
								is_participant_in_war = scope:war
							}
						}
						task_contract_target = {
							save_scope_as = task_contract_target
						}
						task_contract_taker = {
							save_scope_as = task_contract_taker
						}
						if = {
							limit = {
								scope:war = {
									any_war_attacker ?= { this = scope:task_contract_taker }
									primary_defender = {
										this = scope:task_contract_target
										this = scope:loser
									}
								}
								# OR = {
								# 	task_contract_taker = scope:winner
								# 	task_contract_target = scope:loser
								# }
							}
							complete_task_contract = success_standard
						}
						else_if = {
							limit = {
								scope:war = {
									any_war_attacker ?= { this = scope:task_contract_taker }
									primary_defender = {
										this = scope:task_contract_target
										this = scope:winner
									}
								}
							}
							complete_task_contract = failure_standard
						}
					}
				}
			}
		}
	}
}