﻿quarterly_playable_pulse = {
	on_actions = {
	 	gpt_negotiate_events
		gpt_mraid_cloth
		gptmerc_remove_absent
	}
	on_actions = {
		delay = { days = { 10 15 } }
		gpt_merc_riot_events
	}
}

on_game_start_after_lobby = {
	on_actions = {
	}
}

# Called when a raid action starts
# root is the raid army
# scope:raider is the person owning the raid army
# scope:barony is the barony title that got raided
# scope:county is the county title for the barony
on_raid_action_start = {
	on_actions = {
		gpt_raid_call_allies
		gpt_raid_call_allies_liege
	}
}

# Called when a raid action finishes
# root is the raid army
# scope:raider is the person owning the raid army
# scope:barony is the barony title that got raided
# scope:county is the county title for the barony
on_raid_action_completion = {
	on_actions = {
		gpt_raid_completion
		gpt_raid_player_on_coreligionarist
		gpt_on_raid_damage
	}
}

# Called every 7 days during a raid action (except if the raid is stalled due to combat). First call might be anywhere from 1 to 7 days after the raid action begins
# root is the raid army
# scope:raider is the person owning the raid army
# scope:barony is the barony title that got raided
# scope:county is the county title for the barony
on_raid_action_weekly = {
	on_actions = {
	}
}

# Called when a raider returns to their own territory and deposits loot
# Use root.raid_loot to see how much was deposited
# root is the raid army
# scope:raider is the person owning the raid army
on_raid_loot_delivered = {
	on_actions = {
		gpt_surplus_loot
	}
}

# Called when a raid army is defeated in battle and gets its loot (if any) stolen
# Use root.raid_loot to see how they're carrying
# root is the raid army
# scope:raider is the person owning the raid army
# scope:receiver is the person getting the raid loot
on_defeat_raid_army = {
	on_actions = {
		gpt_raid_defeat
	}
}

gptmerc_remove_absent = {
	trigger = {
		is_ai = no
		NOT = { has_character_flag = gptmerc_ongoing_raid_flag }
	}
	effect = {
		every_vassal_or_below = {
			limit = { has_trait = gptmerc_absent }
			remove_trait = gptmerc_absent
		}
		every_courtier_or_guest = {
			limit = { has_trait = gptmerc_absent }
			remove_trait = gptmerc_absent
		}
		every_close_or_extended_family_member = {
			limit = { has_trait = gptmerc_absent }
			remove_trait = gptmerc_absent
		}
		if = {
			limit = {
				is_independent_ruler = no
				exists = top_liege
			}
			top_liege = {
				if = {
					limit = { has_trait = gptmerc_absent }
					remove_trait = gptmerc_absent
				}
				every_vassal_or_below = {
					limit = { has_trait = gptmerc_absent }
					remove_trait = gptmerc_absent
				}
				every_courtier_or_guest = {
					limit = { has_trait = gptmerc_absent }
					remove_trait = gptmerc_absent
				}
				every_close_or_extended_family_member = {
					limit = { has_trait = gptmerc_absent }
					remove_trait = gptmerc_absent
				}
			}
		}
	}
}

gpt_mraid_cloth = {
	trigger = {
		is_ai = no
		employs_court_position = master_of_raids_court_position
	}
	effect = {
		every_courtier = {
			limit = { has_court_position = master_of_raids_court_position }
			add_character_flag = { flag = need_military_outfit days = 91 }
		}
		every_child = {
			limit = { has_trait = gptmerc_absent }
			add_character_flag = { flag = need_military_outfit days = 91 }
		}
	}
}

gpt_on_raid_damage = {
	effect = {
		scope:barony.title_province = {
			county = {
				add_county_modifier = {
					modifier = gpt_recently_looted_county
					years = 2
				}
				if = {
					limit = {
						holder = {
							NOT = { has_perk = enduring_hardships_perk }
						}
					}
					change_county_control = raid_county_control_loss_value
					random_list = {
						25 = {
							change_development_progress_with_overflow = -8
						}
						25 = {
							change_development_progress_with_overflow = -10
						}
						25 = {
							change_development_progress_with_overflow = -12
						}
						25 = {
							change_development_progress_with_overflow = -14
						}
					}
				}
			}
		}
	}
}

gpt_raid_call_allies = {
	trigger = {
		scope:county = {
			holder = {
				NOT = { has_character_flag = gpt_already_helped }
				is_independent_ruler = yes
				max_military_strength < gpt_raider_max_military_strength
			}
		}
	}
	effect = {
		scope:county.holder = { save_scope_as = saved_holder }
		if = {
			limit = {
				scope:saved_holder = {
					exists = dynasty
					any_ally = {
						count >= 1
					}
				}
			}
			if = {
				limit = {
					exists = scope:saved_holder
					scope:saved_holder = { is_independent_ruler = yes }
					scope:saved_holder.ai_sociability > 20
				}
				scope:saved_holder = {
					trigger_event = gpt_raid_complete.0071
				}
			}
			if = {
				limit = {
					exists = scope:saved_holder
					scope:saved_holder = { is_independent_ruler = yes }
					scope:saved_holder.ai_sociability <= 20
					scope:saved_holder.ai_sociability >= -20
				}
				scope:saved_holder = {
					trigger_event = gpt_raid_complete.0072
				}
			}
			if = {
				limit = {
					exists = scope:saved_holder
					scope:saved_holder = { is_independent_ruler = yes }
					scope:saved_holder.ai_sociability < -20
				}
				scope:saved_holder = {
					trigger_event = gpt_raid_complete.0073
				}
			}
		}
	}
}

gpt_raid_call_allies_liege = {
	trigger = {
		scope:county = {
			holder = {
				is_independent_ruler = no
				liege = {
					NOT = { has_character_flag = gpt_already_helped }
					max_military_strength < gpt_raider_max_military_strength
				}
			}
		}
	}
	effect = {
		scope:county.holder = { save_scope_as = saved_holder }
		if = {
			limit = {
				scope:saved_holder = {
					is_independent_ruler = no
					exists = liege
					liege = {
						exists = dynasty
						any_ally = {
							count >= 1
						}
					}
				}
			}
			if = {
				limit = {
					exists = scope:saved_holder
					scope:saved_holder = { is_independent_ruler = no }
					scope:saved_holder.liege = { ai_sociability > 20 }
				}
				scope:saved_holder.liege = {
					trigger_event = gpt_raid_complete.0071
				}
			}
			if = {
				limit = {
					exists = scope:saved_holder
					scope:saved_holder = { is_independent_ruler = no }
					scope:saved_holder.liege = { ai_sociability <= 20 }
					scope:saved_holder.liege = { ai_sociability >= -20 }
				}
				scope:saved_holder.liege = {
					trigger_event = gpt_raid_complete.0072
				}
			}
			if = {
				limit = {
					exists = scope:saved_holder
					scope:saved_holder = { is_independent_ruler = no }
					scope:saved_holder.liege = { ai_sociability < -20 }
				}
				scope:saved_holder.liege = {
					trigger_event = gpt_raid_complete.0073
				}
			}
		}
	}
}

gpt_raid_defeat = {
	trigger = {
		scope:recipient = {
			is_ai = no
			NOT = { has_character_flag = gpt_already_avenged }
			exists = cp:councillor_marshal
		}
	}
	effect = {
		root.army_commander = { save_scope_as = saved_raider }
	 #	remove_global_variable = gpt_raid_loot_value
	 #	set_global_variable = {
	 #		name = gpt_raid_loot_value
	 #		value = root.raid_loot
	 #	}
		if = {
			limit = {
				exists = scope:recipient
			}
			random = {
				chance = 100
				scope:recipient = {
					cp:councillor_marshal = {
						save_scope_as = saved_marshal
					}
					trigger_event = gpt_raid_complete.0051
				}
			}
		}
	}
}

gpt_surplus_loot = {
	trigger = {
		scope:raider = {
			is_ai = no
			NOT = { has_character_flag = gpt_already_surplus }
		}
		root.raid_loot > 100
	}
	effect = {
		remove_global_variable = gpt_raid_loot_value
		set_global_variable = {
			name = gpt_raid_loot_value
			value = root.raid_loot
		}
		if = {
			limit = {
				exists = scope:raider
				scope:raider.ai_greed > 20
			}
			random = {
				chance = 100
				scope:raider = {
					trigger_event = gpt_raid_complete.0041
				}
			}
		}
		if = {
			limit = {
				exists = scope:raider
				scope:raider.ai_greed >= -20
				scope:raider.ai_greed <= 20
			}
			random = {
				chance = 100
				scope:raider = {
					trigger_event = gpt_raid_complete.0042
				}
			}
		}
		if = {
			limit = {
				exists = scope:raider
				scope:raider.ai_greed < -20
			}
			random = {
				chance = 100
				scope:raider = {
					trigger_event = gpt_raid_complete.0043
				}
			}
		}
	}
}

gpt_raid_player_on_coreligionarist = {
	trigger = {
		scope:raider = {
			is_ai = no
		}
		scope:county = {
			holder = {
				is_ai = yes
				faith = { NOT = { has_doctrine_parameter = unreformed } }
				faith = { NOT = { has_doctrine_parameter = faith_can_raid } }
				OR = {
					faith = scope:raider.faith
					faith = {
						faith_hostility_level = {
							target = scope:raider.faith
							value < faith_hostile_level
						}
					}
				}
			}
		}
	}
	effect = {
		scope:county.holder = { save_scope_as = saved_holder }
		if = {
			limit = {
				scope:raider = {
					has_character_flag = gpt_already_warned
				}
			}
			scope:raider = {
				add_piety = -50
				add_piety_experience = -100
			}
		}
		if = {
			limit = {
				exists = scope:saved_holder
				scope:raider = { NOT = { has_character_flag = gpt_already_warned } }
				scope:saved_holder.ai_zeal > 20
			}
			scope:raider = {
				trigger_event = {
					id = gpt_raid_complete.0031
					days = 10
				}
			}
		}
		if = {
			limit = {
				exists = scope:saved_holder
				scope:raider = { NOT = { has_character_flag = gpt_already_warned } }
				scope:saved_holder.ai_zeal <= 20
				scope:saved_holder.ai_zeal >= -20
			}
			scope:raider = {
				trigger_event = {
					id = gpt_raid_complete.0032
					days = 10
				}
			}
		}
		if = {
			limit = {
				exists = scope:saved_holder
				scope:raider = { NOT = { has_character_flag = gpt_already_warned } }
				scope:saved_holder.ai_zeal < -20
			}
			scope:raider = {
				trigger_event = {
					id = gpt_raid_complete.0033
					days = 10
				}
			}
		}
	}
}

gpt_raid_completion = {
	trigger = {
		scope:county = {
			holder = {
				is_ai = no
				NOT = { has_character_flag = gpt_already_raided }
			}
		}
	}
	effect = {
		root.army_commander = { save_scope_as = saved_raider }
		scope:county.holder = { save_scope_as = saved_holder }
		if = {
			limit = {
				exists = scope:saved_raider
				exists = scope:saved_holder
				scope:saved_raider.ai_compassion < -20
			}
			scope:saved_holder = {
				hidden_effect = {
					random_list = {
						40 = { trigger_event = gpt_raid_complete.0001 } #hostages
						30 = { trigger_event = gpt_raid_complete.0002 } #arsonist
						10 = { trigger_event = gpt_raid_complete.0003 } #plague
						10 = { trigger_event = gpt_raid_complete.0004 } #famine
						20 = { trigger_event = gpt_raid_complete.0005 } #trade
						20 = { trigger_event = gpt_raid_complete.0006 } #relics
					}
				}
			}
		}
		if = {
			limit = {
				exists = scope:saved_raider
				exists = scope:saved_holder
				scope:saved_raider.ai_compassion >= -20
				scope:saved_raider.ai_compassion <= 20
			}
			scope:saved_holder = {
				hidden_effect = {
					random_list = {
						40 = { trigger_event = gpt_raid_complete.0011 } #hostages
						30 = { trigger_event = gpt_raid_complete.0012 } #arsonist
						10 = { trigger_event = gpt_raid_complete.0013 } #plague
						10 = { trigger_event = gpt_raid_complete.0014 } #famine
						20 = { trigger_event = gpt_raid_complete.0015 } #trade
						20 = { trigger_event = gpt_raid_complete.0016 } #relics
					}
				}
			}
		}
		if = {
			limit = {
				exists = scope:saved_raider
				exists = scope:saved_holder
				scope:saved_raider.ai_compassion > 20
			}
			scope:saved_holder = {
				hidden_effect = {
					random_list = {
						40 = { trigger_event = gpt_raid_complete.0021 } #hostages
						30 = { trigger_event = gpt_raid_complete.0022 } #arsonist
						10 = { trigger_event = gpt_raid_complete.0023 } #plague
						10 = { trigger_event = gpt_raid_complete.0024 } #famine
						20 = { trigger_event = gpt_raid_complete.0025 } #trade
						20 = { trigger_event = gpt_raid_complete.0026 } #relics
					}
				}
			}
		}
	}
}




gpt_negotiate_events = {
	trigger = {
		is_ai = no
		NOT = { has_character_flag = gpt_ruler_negotiation_cd }
	 #	NOT = { government_has_flag = government_has_treasury }
		any_hired_mercenary = {
			mercenary_company_leader = {
				NOT = { has_character_flag = gpt_already_negotiated }
			}
		}
	}
	effect = {
		add_character_flag = { flag = gpt_ruler_negotiation_cd days = 180 }
		if = {
			limit = {
				exists = scope:saved_mercenary
			}
			clear_saved_scope = saved_mercenary
		}
		every_hired_mercenary = {
			mercenary_company_leader = {
				if = {
					limit = {
						NOT = { has_character_flag = gpt_already_negotiated }
					}
					save_scope_as = saved_mercenary
				}
			}
		}
		if = {
			limit = {
				exists = scope:saved_mercenary
				ai_boldness > 20
			}
			custom_tooltip = gpt_bold_negotiate_tt
			hidden_effect = {
				random_list = {
					33 = { trigger_event = gpt_negotiate.0007 }
					33 = { trigger_event = gpt_negotiate.0008 }
					33 = { trigger_event = gpt_negotiate.0009 }
				}
			}
		}
		else_if = {
			limit = {
				exists = scope:saved_mercenary
				ai_boldness >= -20
				ai_boldness <= 20
			}
			custom_tooltip = gpt_neutral_negotiate_tt
			hidden_effect = {
				random_list = {
					33 = { trigger_event = gpt_negotiate.0004 }
					33 = { trigger_event = gpt_negotiate.0005 }
					33 = { trigger_event = gpt_negotiate.0006 }
				}
			}
		}
		else_if = {
			limit = {
				exists = scope:saved_mercenary
				ai_boldness < -20
			}
			custom_tooltip = gpt_craven_negotiate_tt
			hidden_effect = {
				random_list = {
					33 = { trigger_event = gpt_negotiate.0001 }
					33 = { trigger_event = gpt_negotiate.0002 }
					33 = { trigger_event = gpt_negotiate.0003 }
				}
			}
		}
		else = { }
	}
}

gpt_merc_riot_events = {
	trigger = {
		is_ai = no
		is_at_war = no
		NOT = { has_character_flag = gpt_merc_riot_cd }
		any_hired_mercenary = {
		 	mercenary_company_expiration_days < 1080
			mercenary_company_leader = {
				NOR = {
					is_allied_to = root
					has_character_flag = gpt_merc_riot_cd
					has_trait = loyal
					has_relation_friend = root
					has_relation_best_friend = root
					has_relation_lover = root
					has_relation_soulmate = root
					opinion = {
						target = root
						value > 60
					}
				}
			}
		}
	}
	effect = {
		add_character_flag = { flag = gpt_merc_riot_cd years = 2 }
		if = {
			limit = {
				exists = scope:saved_mercenary
			}
			clear_saved_scope = saved_mercenary
		}
		every_hired_mercenary = {
			if = {
				limit = {
				 	mercenary_company_expiration_days < 1080
					mercenary_company_leader = {
						NOR = {
							is_allied_to = root
							has_character_flag = gpt_merc_riot_cd
							has_trait = loyal
							has_relation_friend = root
							has_relation_best_friend = root
							has_relation_lover = root
							has_relation_soulmate = root
							opinion = {
								target = root
								value > 60
							}
						}
					}
				}
				mercenary_company_leader = {
					save_scope_as = saved_mercenary
				}
			}
		}
		if = {
			limit = {
				exists = scope:saved_mercenary
				exists = scope:saved_mercenary.faith
				faith = {
					faith_hostility_level = {
						target = scope:saved_mercenary.faith
						value >= faith_hostile_level
					}
				}
			}
			random = {
				chance = 5
			 #	modifier = { government_has_flag = government_has_treasury add = 10 }
				modifier = { scope:saved_mercenary = { opinion = { target = root value < 0 } } add = 5 }
				modifier = { scope:saved_mercenary = { opinion = { target = root value < -60 } } add = 5 }
				modifier = { scope:saved_mercenary = { OR = { has_relation_rival = root has_relation_nemesis = root } } add = 10 }
				modifier = { scope:saved_mercenary = { OR = { has_trait = greedy has_trait = ambitious has_trait = arbitrary } } add = 5 }
				modifier = { any_hired_mercenary = { count >= 2 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 3 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 4 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 5 } add = 3 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_unhappy } add = 5 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_happy } add = -5 }
				random_list = {
					25 = { trigger_event = gpt_negotiate.0071 }
					25 = { trigger_event = gpt_negotiate.0072 }
					25 = { trigger_event = gpt_negotiate.0073 }
					25 = { trigger_event = gpt_negotiate.0074 }
				}
			}
		}
		else_if = {
			limit = {
				exists = scope:saved_mercenary
				scope:saved_mercenary = { ai_greed > 20 }
			}
			random = {
				chance = 5
				modifier = { scope:saved_mercenary = { opinion = { target = root value < 0 } } add = 5 }
				modifier = { scope:saved_mercenary = { opinion = { target = root value < -60 } } add = 5 }
				modifier = { scope:saved_mercenary = { OR = { has_relation_rival = root has_relation_nemesis = root } } add = 10 }
				modifier = { scope:saved_mercenary = { OR = { has_trait = greedy has_trait = ambitious has_trait = arbitrary } } add = 5 }
				modifier = { any_hired_mercenary = { count >= 2 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 3 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 4 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 5 } add = 3 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_unhappy } add = 5 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_happy } add = -5 }
				random_list = {
					20 = { trigger_event = gpt_negotiate.0041 }
					20 = { trigger_event = gpt_negotiate.0042 }
					20 = { trigger_event = gpt_negotiate.0043 }
					20 = { trigger_event = gpt_negotiate.0044 }
					20 = { trigger_event = gpt_negotiate.0045 }
					20 = { trigger_event = gpt_negotiate.0046 }
				}
			}
		}
		else_if = {
			limit = {
				exists = scope:saved_mercenary
				scope:saved_mercenary = { ai_greed >= -20 }
				scope:saved_mercenary = { ai_greed <= 20 }
			}
			random = {
				chance = 5
				modifier = { scope:saved_mercenary = { opinion = { target = root value < 0 } } add = 5 }
				modifier = { scope:saved_mercenary = { opinion = { target = root value < -60 } } add = 5 }
				modifier = { scope:saved_mercenary = { OR = { has_relation_rival = root has_relation_nemesis = root } } add = 10 }
				modifier = { scope:saved_mercenary = { OR = { has_trait = greedy has_trait = ambitious has_trait = arbitrary } } add = 5 }
				modifier = { any_hired_mercenary = { count >= 2 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 3 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 4 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 5 } add = 3 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_unhappy } add = 5 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_happy } add = -5 }
				random_list = {
					20 = { trigger_event = gpt_negotiate.0051 }
					20 = { trigger_event = gpt_negotiate.0052 }
					20 = { trigger_event = gpt_negotiate.0053 }
					20 = { trigger_event = gpt_negotiate.0054 }
					20 = { trigger_event = gpt_negotiate.0055 }
				}
			}
		}
		else_if = {
			limit = {
				exists = scope:saved_mercenary
				scope:saved_mercenary = { ai_greed < -20 }
			}
			random = {
				chance = 5
				modifier = { scope:saved_mercenary = { opinion = { target = root value < 0 } } add = 5 }
				modifier = { scope:saved_mercenary = { opinion = { target = root value < -60 } } add = 5 }
				modifier = { scope:saved_mercenary = { OR = { has_relation_rival = root has_relation_nemesis = root } } add = 10 }
				modifier = { scope:saved_mercenary = { OR = { has_trait = greedy has_trait = ambitious has_trait = arbitrary } } add = 5 }
				modifier = { any_hired_mercenary = { count >= 2 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 3 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 4 } add = 3 }
				modifier = { any_hired_mercenary = { count >= 5 } add = 3 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_unhappy } add = 5 }
				modifier = { scope:saved_mercenary = { has_character_flag = gpt_merc_happy } add = -5 }
				random_list = {
					20 = { trigger_event = gpt_negotiate.0061 }
					20 = { trigger_event = gpt_negotiate.0062 }
					20 = { trigger_event = gpt_negotiate.0063 }
					20 = { trigger_event = gpt_negotiate.0064 }
					20 = { trigger_event = gpt_negotiate.0065 }
				}
			}
		}
		else = { }
	}
}