code:
window = {
	name = "court_window"
	parentanchor = top|right
	layer = windows_layer
	movable = no
	allow_outside = yes

	using = Window_Size_MainTab

	datacontext = "[GetVariableSystem]"

	state = {
		name = _show
		using = Animation_FadeIn_Quick
		using = Sound_WindowShow_Standard
		using = Window_Position_MainTab

		on_start = "[GetVariableSystem.Set( 'council_tabs', 'my_council' )]"
	}

	state = {
		name = _hide
		using = Animation_FadeOut_Quick
		using = Sound_WindowHide_Standard
		using = Window_Position_MainTab_Hide
	}

	margin_widget = {
		size = { 100% 100% }
		margin_top = 30
		margin_bottom = 25
		margin_right = 13

		widget = {
			size = { 100% 100% }

			vbox = {
				using = Window_Margins

				header_pattern = {
					layoutpolicy_horizontal = expanding

					blockoverride "header_text"
					{
						text = "COURT_WINDOW_TITLE"
					}

					blockoverride "button_close"
					{
						onclick = "[CourtWindow.Close]"
					}
				}

				hbox = {
					layoutpolicy_horizontal = expanding

					button_tab = {
						name = "court_positions_tab_button_tutorial_uses_this"
						layoutpolicy_horizontal = expanding
						text = COURT_WINDOW_COURT_POSITIONS

						onclick = "[CourtWindow.SetShowPositions]"
						down = "[CourtWindow.IsShowPositions]"

						text_single = {
							parentanchor = vcenter|right
							position = { -20 -2 }
							text = "[GetDataModelSize(CourtWindow.GetCourtOwner.GetEmployedCourtPositions)]"

							default_format = "#low"

							alpha = "[Select_float( GreaterThan_int32(GetDataModelSize(CourtWindow.GetCourtOwner.GetEmployedCourtPositions), '(int32)0'), '(float)1.0', '(float)0.5' )]"
						}
					}

					button_tab = {
						layoutpolicy_horizontal = expanding
						text = "COURT_WINDOW_YOUR_COURTIERS"

						onclick = "[CourtWindow.SetShowCourt]"
						down = "[CourtWindow.IsShowCourt]"
					}

					button_tab = {
						layoutpolicy_horizontal = expanding
						onclick = "[CourtWindow.SetShowPrison]"
						down = "[CourtWindow.IsShowPrison]"

						text_single = {
							text = "INTRIGUE_WINDOW_PRISONERS"
							parentanchor = center

							maximumsize = { 400 -1 }
							default_format = "#low"

							alpha = "[Select_float( GreaterThan_int32(CourtWindow.GetPrisoners.GetTotalNumber, '(int32)0'), '(float)1.0', '(float)0.5' )]"
						}

						text_single = {
							parentanchor = vcenter|right
							position = { -20 0 }
							text = "[CourtWindow.GetPrisoners.GetTotalNumber]"

							default_format = "#low"

							alpha = "[Select_float( GreaterThan_int32(CourtWindow.GetPrisoners.GetTotalNumber, '(int32)0'), '(float)1.0', '(float)0.5' )]"
						}
					}
				}

				##### YOUR COURTIERS #####
				widget = {
					layoutpolicy_horizontal = expanding
					layoutpolicy_vertical = expanding
					visible = "[CourtWindow.IsShowCourt]"

					using = Animation_Tab_Switch

					vbox = {
						name = "court"

						vbox = {
							visible = "[Not(IsDataModelEmpty(GetPlayer.GetCourt))]"
							layoutpolicy_horizontal = expanding
							spacing = 15
							margin_top = 15

							hbox = {
								spacing = 10

								button_decision_entry = {
									name = "invite_knights_decision"
									datacontext = "[GetDecisionWithKey('invite_knights_decision')]"
									visible = "[Decision.IsShownForPlayer]"

									onclick = "[OpenGameViewData( 'decision_detail', Decision.Self)]"
									using = tooltip_se

									blockoverride "button_size"
									{
										size = { 210 30 }
									}
								}

								button_decision_entry = {
									name = "invite_claimants_decision"
									datacontext = "[GetDecisionWithKey('invite_claimants_decision')]"
									visible = "[Decision.IsShownForPlayer]"

									onclick = "[OpenGameViewData( 'decision_detail', Decision.Self)]"
									using = tooltip_se

									blockoverride "button_size"
									{
										size = { 210 30 }
									}
								}
							}

							vbox = {
								layoutpolicy_horizontal = expanding
								layoutpolicy_vertical = expanding
								spacing = 5

								text_label_center = {
									text = "COUNCIL_WINDOW_GUESTS_AND_COURTIERS"
									layoutpolicy_horizontal = expanding
									autoresize = no
								}

								vbox_character_list = {
									layoutpolicy_horizontal = expanding
									layoutpolicy_vertical = expanding
									minimumsize = { -1 800 }
									datacontext = "[CourtWindow.GetCourt]"

									blockoverride "sort_dropdown" {
										dropdown_sort_characterlist = {
											# unique name needed to distinct from prisoner sort options
											name = "court_sort_options"
										}
									}

									blockoverride "scrollbox_empty_visibility"
									{
										layoutpolicy_vertical = expanding
										visible = "[And(Not(CharacterSelectionList.IsBuildingList), IsDataModelEmpty(CharacterSelectionList.GetList) )]"
										text = "COURT_WINDOW_NO_GUESTS_OR_COURTIERS"
									}

									blockoverride "container_implementation" {
										fixedgridbox = {
											name = "characters_grid"
											datamodel = "[CharacterSelectionList.GetList]"
											visible = "[Not(CharacterSelectionList.IsBuildingList)]"
											addcolumn = 520
											addrow = 130
											setitemsizefromcell = yes

											item = {
												widget_courtier_item = {
													datacontext = "[CharacterListItem.GetCharacter]"

													blockoverride "description_relation_text" {
														text = "[SelectLocalization(Character.IsGuest, Character.GetRelationAndGuestDesc, Character.GetRelationToString(GetPlayer.Self))]"
														tooltip = "EXTENDED_RELATIONS_TOOLTIP"
													}
												}
											}
										}
									}
								}
							}
						}

						expand = {
							layoutpolicy_vertical = expanding
						}
					}
				}

				## POSITONS
				vbox_court_positions = {
					name = "court_positions_subtab_tutorial_uses_this"
					widgetid = "court_positions_subtab_tutorial_uses_this"
					datacontext = "[CourtWindow.AccessCourtPositionWindow]"
					visible = "[CourtWindow.IsShowPositions]"

					using = Animation_Tab_Switch

					layoutpolicy_horizontal = expanding
					layoutpolicy_vertical = expanding
				}
				## PRISONERS
				vbox = {
					datacontext = "[CourtWindow.GetPrisoners]"
					visible = "[CourtWindow.IsShowPrison]"
					layoutpolicy_horizontal = expanding
					layoutpolicy_vertical = expanding

					using = Animation_Tab_Switch

					state = {
						name = _show
						using = Animation_FadeIn_Quick
					}

					state = {
						name = _hide
						alpha = 0
					}

					text_single = {
						visible = "[LessThanOrEqualTo_int32( CharacterSelectionList.GetTotalNumber, '(int32)0' )]"
						text = "PRISON_EMPTY"
						default_format = "#weak"
					}

					background = {
						visible = "[LessThanOrEqualTo_int32( CharacterSelectionList.GetTotalNumber, '(int32)0' )]"
						texture = "gfx/interface/skinned/illustrations/dungeon.dds"
						fittype = centercrop
						framesize = { 700 800 }
						frame = 2

						using = Mask_Rough_Edges

						modify_texture = {
							texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
							blend_mode = alphamultiply
							mirror = vertical
						}
					}

					background = {
						visible = "[GreaterThan_int32( CharacterSelectionList.GetTotalNumber, '(int32)0' )]"
						texture = "gfx/interface/skinned/illustrations/dungeon.dds"
						fittype = end
						alpha = 0.4

						using = Mask_Rough_Edges

						modify_texture = {
							texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
							blend_mode = alphamultiply
							mirror = vertical
						}
					}

					## Layout with more than MAX_PRISONER_COUNT_GRID(4) prisoners
					vbox_character_list = {
						visible = "[GreaterThan_int32( CourtWindow.GetPrisoners.GetTotalNumber, GetDefine( 'NGui', 'MAX_PRISONER_COUNT_GRID' ) )]"
						layoutpolicy_horizontal = expanding
						layoutpolicy_vertical = expanding

						blockoverride "container_implementation"
						{
							fixedgridbox = {
								name = "characters_grid"
								datamodel = "[CharacterSelectionList.GetList]"
								visible = "[Not(CharacterSelectionList.IsBuildingList)]"
								layoutpolicy_horizontal = expanding
								addcolumn = 520
								addrow = 148
								datamodel_reuse_widgets = yes

								item = {
									vbox = {
										maximumsize = { 520 148 }

										widget_character_list_item_finder = {
											layoutpolicy_horizontal = expanding
											blockoverride "divider" {}
											blockoverride "character_relation" {}

											blockoverride "gridbox_items"
											{
												datamodel_wrap = 4
												maxverticalslots = 2
											}
										}

										hbox = {
											name = "prisoner_data"
											layoutpolicy_horizontal = expanding
											margin = { 8 4 }
											spacing = 5

											background = {
												using = Background_Area_Dark
												alpha = 0.5
											}

											hbox = {
												name = "info_text"
												layoutpolicy_horizontal = expanding
												layoutpolicy_vertical = expanding

												spacing = 8

												text_single = {
													name = "type"
													layoutpolicy_horizontal = expanding
													text = "[CharacterListItem.GetText('tooltip')]"
													default_format = "#low"
													autoresize = no
													align = nobaseline
												}

												text_single = {
													name = "imprisoned_time"
													layoutpolicy_horizontal = expanding
													text = "[CharacterListItem.GetText('imprisoned_time')]"
													autoresize = no
													align = nobaseline
													default_format = "#low"
												}

											}

											button_checkbox = {
												name = "lock_from_mass_actions"
												checked = "[CharacterListItem.GetBool('is_mass_action_locked')]"
												onclick = "[CharacterListItem.OnClick('mass_action_lock')]"
												tooltip = "[CharacterListItem.GetText('mass_action_lock_tooltip')]"
											}

											prison_interactions_hbox = {}
										}
									}
								}
							}
						}

						blockoverride "bottom_bar"
						{
							hbox = {
								margin = { 10 0 }
								spacing = 3

								text_single = {
									text = "MASS_PRISONER_ACTIONS"
									default_format = "#low"
									align = nobaseline
								}

								spacer = {
									size = { 5 5 }
								}

								button_round  = {
									name = "ransom"
									enabled = "[CourtWindow.CanDoMassPrisonerAction('ransom')]"

									button_prison_ransom = {
										parentanchor = center
										onclick = "[CourtWindow.MassPrisonerAction('ransom')]"
										tooltip = "[CourtWindow.GetMassPrisonerActionTooltip('ransom')]"
										using = tooltip_se
									}
								}

								button_round  = {
									name = "release"
									enabled = "[CourtWindow.CanDoMassPrisonerAction('release')]"

									button_prison_release = {
										parentanchor = center
										onclick = "[CourtWindow.MassPrisonerAction('release')]"
										tooltip = "[CourtWindow.GetMassPrisonerActionTooltip('release')]"
										using = tooltip_se
									}
								}

								button_round  = { # Carnalitas: mass enslave button
									name = "enslave"
									datacontext = "[GetScriptedGui( 'carn_button_prison_mass_enslave' )]"
									visible = "[ScriptedGui.IsShown( GuiScope.SetRoot( GetPlayer.MakeScope ).End )]"
									enabled = "[ScriptedGui.IsValid( GuiScope.SetRoot( GetPlayer.MakeScope ).End )]"

									button_prison_enslave = {
										parentanchor = center
										datacontext = "[GetScriptedGui( 'carn_button_prison_mass_enslave' )]"
										onclick = "[ScriptedGui.Execute( GuiScope.SetRoot( GetPlayer.MakeScope ).End )]"
										tooltip = carn_button_prison_mass_enslave_tooltip
										using = tooltip_se
									}
								}

								button_round  = {
									name = "execute"
									enabled = "[CourtWindow.CanDoMassPrisonerAction('execute')]"

									button_prison_execute = {
										parentanchor = center
										onclick = "[CourtWindow.MassPrisonerAction('execute')]"
										tooltip = "[CourtWindow.GetMassPrisonerActionTooltip('execute')]"
										using = tooltip_se
									}
								}
							}
						}
					}

					## Layout with MAX_PRISONER_COUNT_GRID(4) or fewer prisoners
					vbox = {
						visible = "[And( GreaterThan_int32( CourtWindow.GetPrisoners.GetTotalNumber, '(int32)0' ), LessThanOrEqualTo_int32( CourtWindow.GetPrisoners.GetTotalNumber, GetDefine( 'NGui', 'MAX_PRISONER_COUNT_GRID' ) ) )]"
						layoutpolicy_horizontal = expanding
						layoutpolicy_vertical = expanding
						margin = { 0 15 }
						margin_left = 10

						fixedgridbox = {
							datamodel = "[CharacterSelectionList.GetList]"
							layoutpolicy_horizontal = expanding
							layoutpolicy_vertical = expanding
							addcolumn = 262
							addrow = 405
							datamodel_wrap = 2
							flipdirection = yes
							#setitemsizefromcell = yes

							item = {
								widget = {
									size = { 262 395}
									datacontext = "[CharacterListItem.GetCharacter]"

									background = {
										texture = "gfx/interface/skinned/illustrations/dungeon.dds"
										margin = { -5 0 }
										fittype = centercrop
										alpha = 0.3

										using = Mask_Rough_Edges
									}

									background = {
										using = Background_Frame
										alpha = 0.5
									}

									widget = {
										size = { 100% 100% }
										scissor = yes

										portrait_body = {
											parentanchor = bottom|hcenter
											position = { 0 -70 }

											blockoverride "coa" {}
											blockoverride "opinion_box" {}
											blockoverride "status_icons" {}
										}
									}

									vbox = {
										expand = {}

										hbox = {
											layoutpolicy_horizontal = expanding
											margin = { 5 5 }

											expand = {}

											hbox = {
												spacing = 5

												background = {
													using = Background_Area
												}

												vbox = {
													margin_bottom = 3

													expand = {}

													portrait_status_icons = {}
												}

												vbox = {
													layoutpolicy_vertical = expanding

													expand = {}

													coa_realm_tiny_crown = {
														visible = "[Character.HasLandedTitles]"
													}

													portrait_opinion = {}
												}
											}
										}

										vbox = {
											layoutpolicy_horizontal = expanding
											margin = { 5 5 }

											background = {
												using = Background_Area
												margin_bottom = 3
											}

											text_single = {
												text = "[Character.GetShortUINameNoTooltip]"
												default_format = "#high"
												using = Font_Size_Medium
											}

											text_single = {
												visible = "[Character.IsImprisoned]"
												name = "type"
												text = "[CharacterListItem.GetText('tooltip')]"
											}
										}

										spacer = {
											size = { 3 3 }
										}

										### Actions
										vbox = {
											name = "actions"
											layoutpolicy_horizontal = expanding
											visible = "[And( CharacterListItem.GetCharacter.IsAlive, CharacterListItem.GetCharacter.IsImprisoned )]"
											spacing = 10
											margin = { 10 5 }
											margin_bottom = 15

											background = {
												using = Background_Area_Dark
											}

											hbox = {
												spacing = 5

												icon = {
													texture = "gfx/interface/icons/portraits/punishment.dds"
													size = { 20 20 }
												}

												text_single = {
													name = "imprisoned_time"
													layoutpolicy_horizontal = expanding
													text = "[CharacterListItem.GetText('imprisoned_time')]"
												}
											}

											prison_interactions_hbox = {}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}

	window_character_filter = {
		name = "court_character_filter_window"
		datacontext = "[CourtWindow.GetCourt]"
		size = { 510 902 }

		blockoverride "editbox_properties"
		{
			name = "court_text_filter"
			ontextedited = "[CharacterSelectionList.SetPattern]"
			oneditingfinished = "[CharacterSelectionList.FinishEdit]"
		}

		blockoverride "addition_filter" {
			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('age_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('adult_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('politics_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('claim_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('hostage_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('personal_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('religion_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('culture_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('hook_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('married_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('gender_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('health_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('inspiration_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('tutor_filter')]"
					}
				}
			}

			filter_item = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetFilter('dynasty_filter')]"
			}
		}
	}

	window_character_filter = {
		datacontext = "[CourtWindow.GetPrisoners]"
		blockoverride "addition_filter" {

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('age_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('adult_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('politics_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('ruler_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('claim_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('personal_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('religion_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('culture_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('hook_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('married_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('gender_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('health_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('inspiration_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('tutor_filter')]"
					}
				}
			}

			filter_item = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetFilter('dynasty_filter')]"
			}
		}
	}
}

types PrisonTypes
{

	type prison_interactions_hbox = hbox {
		spacing = 1

		button_round  = {
			name = "ransom"
			enabled = "[CharacterListItem.GetBool('can_ransom')]"

			button_prison_ransom = {
				parentanchor = center
				onclick = "[CharacterListItem.OnClick('ransom')]"
				enabled = "[CharacterListItem.GetBool('can_ransom')]"
				tooltip = "[CharacterListItem.GetText('ransom_tooltip')]"
				using = tooltip_se
			}
		}

		button_round  = {
			name = "release"
			enabled = "[CharacterListItem.GetBool('can_release')]"

			button_prison_release = {
				parentanchor = center
				onclick = "[CharacterListItem.OnClick('release')]"
				enabled = "[CharacterListItem.GetBool('can_release')]"
				tooltip = "[CharacterListItem.GetText('release_tooltip')]"
				using = tooltip_se
			}
		}

		button_round  = {
			name = "execute"
			enabled = "[CharacterListItem.GetBool('can_execute')]"

			button_prison_execute = {
				parentanchor = center
				onclick = "[CharacterListItem.OnClick('execute')]"
				enabled = "[CharacterListItem.GetBool('can_execute')]"
				tooltip = "[CharacterListItem.GetText('execute_tooltip')]"
				using = tooltip_se
			}
		}

		divider_light = {
			layoutpolicy_vertical = expanding
		}

		button_round = {

			datacontext = "[CharacterListItem.GetCharacter]"

			tooltip = "PRISON_INTERACTIONS_BUTTON_TOOLTIP"
			tooltip_visible = "[Not(IsInteractionMenuOpenForCharacterWithFilter(Character.Self, 'interaction_category_prison'))]"
			using = tooltip_se

			onclick = "[ToggleFilteredCharacterInteractionMenu(Character.Self, 'interaction_category_prison')]"

			button_icon = {
				alwaystransparent = yes
				parentanchor = center
				size = { 30 30 }
				texture = "gfx/interface/icons/flat_icons/character_interactions.dds"
			}
		}
	}

}

repo_name: Synthael/carnalitas

license: mit


code:
window = {
	name = "court_window"
	parentanchor = top|right
	layer = windows_layer
	movable = no
	allow_outside = yes

	using = Window_Size_MainTab

	datacontext = "[GetVariableSystem]"

	state = {
		name = _show
		using = Animation_FadeIn_Quick
		using = Sound_WindowShow_Standard
		using = Window_Position_MainTab

		on_start = "[GetVariableSystem.Set( 'council_tabs', 'my_council' )]"
	}

	state = {
		name = _hide
		using = Animation_FadeOut_Quick
		using = Sound_WindowHide_Standard
		using = Window_Position_MainTab_Hide
	}

	margin_widget = {
		size = { 100% 100% }
		margin_top = 30
		margin_bottom = 25
		margin_right = 13

		widget = {
			size = { 100% 100% }

			vbox = {
				using = Window_Margins

				header_pattern = {
					layoutpolicy_horizontal = expanding

					blockoverride "header_text"
					{
						text = "COURT_WINDOW_TITLE"
					}

					blockoverride "button_close"
					{
						onclick = "[CourtWindow.Close]"
					}
				}

				hbox = {
					layoutpolicy_horizontal = expanding

					button_tab = {
						name = "court_positions_tab_button_tutorial_uses_this"
						layoutpolicy_horizontal = expanding
						text = COURT_WINDOW_COURT_POSITIONS

						onclick = "[CourtWindow.SetShowPositions]"
						down = "[CourtWindow.IsShowPositions]"

						text_single = {
							parentanchor = vcenter|right
							position = { -20 -2 }
							text = "[GetDataModelSize(CourtWindow.GetCourtOwner.GetEmployedCourtPositions)]"

							default_format = "#low"

							alpha = "[Select_float( GreaterThan_int32(GetDataModelSize(CourtWindow.GetCourtOwner.GetEmployedCourtPositions), '(int32)0'), '(float)1.0', '(float)0.5' )]"
						}
					}

					button_tab = {
						layoutpolicy_horizontal = expanding
						text = "COURT_WINDOW_YOUR_COURTIERS"

						onclick = "[CourtWindow.SetShowCourt]"
						down = "[CourtWindow.IsShowCourt]"
					}

					button_tab = {
						layoutpolicy_horizontal = expanding
						onclick = "[CourtWindow.SetShowPrison]"
						down = "[CourtWindow.IsShowPrison]"

						text_single = {
							text = "INTRIGUE_WINDOW_PRISONERS"
							parentanchor = center

							maximumsize = { 400 -1 }
							default_format = "#low"

							alpha = "[Select_float( GreaterThan_int32(CourtWindow.GetPrisoners.GetTotalNumber, '(int32)0'), '(float)1.0', '(float)0.5' )]"
						}

						text_single = {
							parentanchor = vcenter|right
							position = { -20 0 }
							text = "[CourtWindow.GetPrisoners.GetTotalNumber]"

							default_format = "#low"

							alpha = "[Select_float( GreaterThan_int32(CourtWindow.GetPrisoners.GetTotalNumber, '(int32)0'), '(float)1.0', '(float)0.5' )]"
						}
					}
				}

				##### YOUR COURTIERS #####
				widget = {
					layoutpolicy_horizontal = expanding
					layoutpolicy_vertical = expanding
					visible = "[CourtWindow.IsShowCourt]"

					using = Animation_Tab_Switch

					vbox = {
						name = "court"

						vbox = {
							visible = "[Not(IsDataModelEmpty(GetPlayer.GetCourt))]"
							layoutpolicy_horizontal = expanding
							spacing = 15
							margin_top = 15

							hbox = {
								spacing = 10

								button_decision_entry = {
									name = "invite_knights_decision"
									datacontext = "[GetDecisionWithKey('invite_knights_decision')]"
									visible = "[Decision.IsShownForPlayer]"

									onclick = "[OpenGameViewData( 'decision_detail', Decision.Self)]"
									using = tooltip_se

									blockoverride "button_size"
									{
										size = { 210 30 }
									}
								}

								button_decision_entry = {
									name = "invite_claimants_decision"
									datacontext = "[GetDecisionWithKey('invite_claimants_decision')]"
									visible = "[Decision.IsShownForPlayer]"

									onclick = "[OpenGameViewData( 'decision_detail', Decision.Self)]"
									using = tooltip_se

									blockoverride "button_size"
									{
										size = { 210 30 }
									}
								}
							}

							vbox = {
								layoutpolicy_horizontal = expanding
								layoutpolicy_vertical = expanding
								spacing = 5

								text_label_center = {
									text = "COUNCIL_WINDOW_GUESTS_AND_COURTIERS"
									layoutpolicy_horizontal = expanding
									autoresize = no
								}

								vbox_character_list = {
									layoutpolicy_horizontal = expanding
									layoutpolicy_vertical = expanding
									minimumsize = { -1 800 }
									datacontext = "[CourtWindow.GetCourt]"

									blockoverride "sort_dropdown" {
										dropdown_sort_characterlist = {
											# unique name needed to distinct from prisoner sort options
											name = "court_sort_options"
										}
									}

									blockoverride "scrollbox_empty_visibility"
									{
										layoutpolicy_vertical = expanding
										visible = "[And(Not(CharacterSelectionList.IsBuildingList), IsDataModelEmpty(CharacterSelectionList.GetList) )]"
										text = "COURT_WINDOW_NO_GUESTS_OR_COURTIERS"
									}

									blockoverride "container_implementation" {
										fixedgridbox = {
											name = "characters_grid"
											datamodel = "[CharacterSelectionList.GetList]"
											visible = "[Not(CharacterSelectionList.IsBuildingList)]"
											addcolumn = 520
											addrow = 130
											setitemsizefromcell = yes

											item = {
												widget_courtier_item = {
													datacontext = "[CharacterListItem.GetCharacter]"

													blockoverride "description_relation_text" {
														text = "[SelectLocalization(Character.IsGuest, Character.GetRelationAndGuestDesc, Character.GetRelationToString(GetPlayer.Self))]"
														tooltip = "EXTENDED_RELATIONS_TOOLTIP"
													}
												}
											}
										}
									}
								}
							}
						}

						expand = {
							layoutpolicy_vertical = expanding
						}
					}
				}

				## POSITONS
				vbox_court_positions = {
					name = "court_positions_subtab_tutorial_uses_this"
					widgetid = "court_positions_subtab_tutorial_uses_this"
					datacontext = "[CourtWindow.AccessCourtPositionWindow]"
					visible = "[CourtWindow.IsShowPositions]"

					using = Animation_Tab_Switch

					layoutpolicy_horizontal = expanding
					layoutpolicy_vertical = expanding
				}
				## PRISONERS
				vbox = {
					datacontext = "[CourtWindow.GetPrisoners]"
					visible = "[CourtWindow.IsShowPrison]"
					layoutpolicy_horizontal = expanding
					layoutpolicy_vertical = expanding

					using = Animation_Tab_Switch

					state = {
						name = _show
						using = Animation_FadeIn_Quick
					}

					state = {
						name = _hide
						alpha = 0
					}

					text_single = {
						visible = "[LessThanOrEqualTo_int32( CharacterSelectionList.GetTotalNumber, '(int32)0' )]"
						text = "PRISON_EMPTY"
						default_format = "#weak"
					}

					background = {
						visible = "[LessThanOrEqualTo_int32( CharacterSelectionList.GetTotalNumber, '(int32)0' )]"
						texture = "gfx/interface/skinned/illustrations/dungeon.dds"
						fittype = centercrop
						framesize = { 700 800 }
						frame = 2

						using = Mask_Rough_Edges

						modify_texture = {
							texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
							blend_mode = alphamultiply
							mirror = vertical
						}
					}

					background = {
						visible = "[GreaterThan_int32( CharacterSelectionList.GetTotalNumber, '(int32)0' )]"
						texture = "gfx/interface/skinned/illustrations/dungeon.dds"
						fittype = end
						alpha = 0.4

						using = Mask_Rough_Edges

						modify_texture = {
							texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
							blend_mode = alphamultiply
							mirror = vertical
						}
					}

					## Layout with more than MAX_PRISONER_COUNT_GRID(4) prisoners
					vbox_character_list = {
						visible = "[GreaterThan_int32( CourtWindow.GetPrisoners.GetTotalNumber, GetDefine( 'NGui', 'MAX_PRISONER_COUNT_GRID' ) )]"
						layoutpolicy_horizontal = expanding
						layoutpolicy_vertical = expanding

						blockoverride "container_implementation"
						{
							fixedgridbox = {
								name = "characters_grid"
								datamodel = "[CharacterSelectionList.GetList]"
								visible = "[Not(CharacterSelectionList.IsBuildingList)]"
								layoutpolicy_horizontal = expanding
								addcolumn = 520
								addrow = 148
								datamodel_reuse_widgets = yes

								item = {
									vbox = {
										maximumsize = { 520 148 }

										widget_character_list_item_finder = {
											layoutpolicy_horizontal = expanding
											blockoverride "divider" {}
											blockoverride "character_relation" {}

											blockoverride "gridbox_items"
											{
												datamodel_wrap = 4
												maxverticalslots = 2
											}
										}

										hbox = {
											name = "prisoner_data"
											layoutpolicy_horizontal = expanding
											margin = { 8 4 }
											spacing = 5

											background = {
												using = Background_Area_Dark
												alpha = 0.5
											}

											hbox = {
												name = "info_text"
												layoutpolicy_horizontal = expanding
												layoutpolicy_vertical = expanding

												spacing = 8

												text_single = {
													name = "type"
													layoutpolicy_horizontal = expanding
													text = "[CharacterListItem.GetText('tooltip')]"
													default_format = "#low"
													autoresize = no
													align = nobaseline
												}

												text_single = {
													name = "imprisoned_time"
													layoutpolicy_horizontal = expanding
													text = "[CharacterListItem.GetText('imprisoned_time')]"
													autoresize = no
													align = nobaseline
													default_format = "#low"
												}

											}

											button_checkbox = {
												name = "lock_from_mass_actions"
												checked = "[CharacterListItem.GetBool('is_mass_action_locked')]"
												onclick = "[CharacterListItem.OnClick('mass_action_lock')]"
												tooltip = "[CharacterListItem.GetText('mass_action_lock_tooltip')]"
											}

											prison_interactions_hbox = {}
										}
									}
								}
							}
						}

						blockoverride "bottom_bar"
						{
							hbox = {
								margin = { 10 0 }
								spacing = 3

								text_single = {
									text = "MASS_PRISONER_ACTIONS"
									default_format = "#low"
									align = nobaseline
								}

								spacer = {
									size = { 5 5 }
								}

								button_round  = {
									name = "ransom"
									enabled = "[CourtWindow.CanDoMassPrisonerAction('ransom')]"

									button_prison_ransom = {
										parentanchor = center
										onclick = "[CourtWindow.MassPrisonerAction('ransom')]"
										tooltip = "[CourtWindow.GetMassPrisonerActionTooltip('ransom')]"
										using = tooltip_se
									}
								}

								button_round  = {
									name = "release"
									enabled = "[CourtWindow.CanDoMassPrisonerAction('release')]"

									button_prison_release = {
										parentanchor = center
										onclick = "[CourtWindow.MassPrisonerAction('release')]"
										tooltip = "[CourtWindow.GetMassPrisonerActionTooltip('release')]"
										using = tooltip_se
									}
								}

								button_round  = {
									name = "execute"
									enabled = "[CourtWindow.CanDoMassPrisonerAction('execute')]"

									button_prison_execute = {
										parentanchor = center
										onclick = "[CourtWindow.MassPrisonerAction('execute')]"
										tooltip = "[CourtWindow.GetMassPrisonerActionTooltip('execute')]"
										using = tooltip_se
									}
								}
							}
						}
					}

					## Layout with MAX_PRISONER_COUNT_GRID(4) or fewer prisoners
					vbox = {
						visible = "[And( GreaterThan_int32( CourtWindow.GetPrisoners.GetTotalNumber, '(int32)0' ), LessThanOrEqualTo_int32( CourtWindow.GetPrisoners.GetTotalNumber, GetDefine( 'NGui', 'MAX_PRISONER_COUNT_GRID' ) ) )]"
						layoutpolicy_horizontal = expanding
						layoutpolicy_vertical = expanding
						margin = { 0 15 }
						margin_left = 10

						fixedgridbox = {
							datamodel = "[CharacterSelectionList.GetList]"
							layoutpolicy_horizontal = expanding
							layoutpolicy_vertical = expanding
							addcolumn = 262
							addrow = 405
							datamodel_wrap = 2
							flipdirection = yes
							#setitemsizefromcell = yes

							item = {
								widget = {
									size = { 262 395}
									datacontext = "[CharacterListItem.GetCharacter]"

									background = {
										texture = "gfx/interface/skinned/illustrations/dungeon.dds"
										margin = { -5 0 }
										fittype = centercrop
										alpha = 0.3

										using = Mask_Rough_Edges
									}

									background = {
										using = Background_Frame
										alpha = 0.5
									}

									widget = {
										size = { 100% 100% }
										scissor = yes

										portrait_body = {
											parentanchor = bottom|hcenter
											position = { 0 -70 }

											blockoverride "coa" {}
											blockoverride "opinion_box" {}
											blockoverride "status_icons" {}
										}
									}

									vbox = {
										expand = {}

										hbox = {
											layoutpolicy_horizontal = expanding
											margin = { 5 5 }

											expand = {}

											hbox = {
												spacing = 5

												background = {
													using = Background_Area
												}

												vbox = {
													margin_bottom = 3

													expand = {}

													portrait_status_icons = {}
												}

												vbox = {
													layoutpolicy_vertical = expanding

													expand = {}

													coa_realm_tiny_crown = {
														visible = "[Character.HasLandedTitles]"
													}

													portrait_opinion = {}
												}
											}
										}

										vbox = {
											layoutpolicy_horizontal = expanding
											margin = { 5 5 }

											background = {
												using = Background_Area
												margin_bottom = 3
											}

											text_single = {
												text = "[Character.GetShortUINameNoTooltip]"
												default_format = "#high"
												using = Font_Size_Medium
											}

											text_single = {
												visible = "[Character.IsImprisoned]"
												name = "type"
												text = "[CharacterListItem.GetText('tooltip')]"
											}
										}

										spacer = {
											size = { 3 3 }
										}

										### Actions
										vbox = {
											name = "actions"
											layoutpolicy_horizontal = expanding
											visible = "[And( CharacterListItem.GetCharacter.IsAlive, CharacterListItem.GetCharacter.IsImprisoned )]"
											spacing = 10
											margin = { 10 5 }
											margin_bottom = 15

											background = {
												using = Background_Area_Dark
											}

											hbox = {
												spacing = 5

												icon = {
													texture = "gfx/interface/icons/portraits/punishment.dds"
													size = { 20 20 }
												}

												text_single = {
													name = "imprisoned_time"
													layoutpolicy_horizontal = expanding
													text = "[CharacterListItem.GetText('imprisoned_time')]"
												}
											}

											prison_interactions_hbox = {}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}

	window_character_filter = {
		name = "court_character_filter_window"
		datacontext = "[CourtWindow.GetCourt]"
		size = { 510 902 }

		blockoverride "editbox_properties"
		{
			name = "court_text_filter"
			ontextedited = "[CharacterSelectionList.SetPattern]"
			oneditingfinished = "[CharacterSelectionList.FinishEdit]"
		}

		blockoverride "addition_filter" {
			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('age_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('adult_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('politics_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('claim_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('hostage_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('personal_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('religion_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('culture_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('hook_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('married_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('gender_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('health_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('inspiration_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('tutor_filter')]"
					}
				}
			}

			filter_item = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetFilter('dynasty_filter')]"
			}
		}
	}

	window_character_filter = {
		datacontext = "[CourtWindow.GetPrisoners]"
		blockoverride "addition_filter" {

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('age_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('adult_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('politics_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('ruler_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('claim_filter')]"
					}
				}
			}

			vbox_filter_group = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetCategory('personal_filter_category')]"
				blockoverride "filters" {
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('religion_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('culture_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('hook_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('married_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('gender_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('health_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('inspiration_filter')]"
					}
					filter_item = {
						layoutpolicy_horizontal = expanding
						datacontext = "[CharacterSelectionList.GetFilter('tutor_filter')]"
					}
				}
			}

			filter_item = {
				layoutpolicy_horizontal = expanding
				datacontext = "[CharacterSelectionList.GetFilter('dynasty_filter')]"
			}
		}
	}
}

types PrisonTypes
{

	type prison_interactions_hbox = hbox {
		spacing = 1

		button_round  = {
			name = "ransom"
			enabled = "[CharacterListItem.GetBool('can_ransom')]"

			button_prison_ransom = {
				parentanchor = center
				onclick = "[CharacterListItem.OnClick('ransom')]"
				enabled = "[CharacterListItem.GetBool('can_ransom')]"
				tooltip = "[CharacterListItem.GetText('ransom_tooltip')]"
				using = tooltip_se
			}
		}

		button_round  = {
			name = "release"
			enabled = "[CharacterListItem.GetBool('can_release')]"

			button_prison_release = {
				parentanchor = center
				onclick = "[CharacterListItem.OnClick('release')]"
				enabled = "[CharacterListItem.GetBool('can_release')]"
				tooltip = "[CharacterListItem.GetText('release_tooltip')]"
				using = tooltip_se
			}
		}

		button_round  = {
			name = "execute"
			enabled = "[CharacterListItem.GetBool('can_execute')]"

			button_prison_execute = {
				parentanchor = center
				onclick = "[CharacterListItem.OnClick('execute')]"
				enabled = "[CharacterListItem.GetBool('can_execute')]"
				tooltip = "[CharacterListItem.GetText('execute_tooltip')]"
				using = tooltip_se
			}
		}

		divider_light = {
			layoutpolicy_vertical = expanding
		}

		button_round = {

			datacontext = "[CharacterListItem.GetCharacter]"

			tooltip = "PRISON_INTERACTIONS_BUTTON_TOOLTIP"
			tooltip_visible = "[Not(IsInteractionMenuOpenForCharacterWithFilter(Character.Self, 'interaction_category_prison'))]"
			using = tooltip_se

			onclick = "[ToggleFilteredCharacterInteractionMenu(Character.Self, 'interaction_category_prison')]"

			button_icon = {
				alwaystransparent = yes
				parentanchor = center
				size = { 30 30 }
				texture = "gfx/interface/icons/flat_icons/character_interactions.dds"
			}
		}
	}

}


code:
l_english:

 carn_tradition_placeholder_desc:0 "Carnalitas Tradition Placeholder"
 culture_parameter_carn_no_consequences_for_extramarital_sex_with_others:0 "[extramarital_sex|E] with others does not incur any penalties"
 culture_parameter_carn_no_consequences_for_extramarital_sex_with_me:0 "Other characters are not penalized for [extramarital_sex|E] with characters of this culture"
 culture_parameter_carn_prostitution_accepted:0 "[prostitution|E] is legal"
 culture_parameter_carn_more_good_prostitution_events:0 "Lucky random events from [prostitution|E] are more common"
 culture_parameter_lustful_trait_more_common:0 "The [GetTrait('lustful').GetName( GetNullCharacter )] [trait|E] is more common"


code:
l_english:

 carn_work_as_prostitute_decision: "Moonlight as a Prostitute"
 carn_work_as_prostitute_decision_desc: "If I desire money -- or an excuse to sleep around -- I can let everyone know that I am offering my sexual services to the highest bidder."
 carn_work_as_prostitute_decision_tooltip: "Start working as a prostitute, trading your [prestige|E] and chastity for [gold|E]"
 carn_work_as_prostitute_decision_confirm: "Lay out the incense and candles..."
 msg_carn_started_working_as_prostitute: "Started Prostitution"

 carn_stop_work_as_prostitute_decision: "Stop Moonlighting as a Prostitute"
 carn_stop_work_as_prostitute_decision_desc: "My journey as a prostitute has ended, and it is time for me to focus on my duties to the realm."
 carn_stop_work_as_prostitute_decision_tooltip: "Stop working as a prostitute, reducing your [income|E] but improving your [prestige|E]"
 carn_stop_work_as_prostitute_decision_confirm: "Put away the incense and candles"
 msg_carn_stopped_working_as_prostitute: "Stopped Prostitution"

 carn_start_birth_control_decision: "Start Birth Control"
 carn_start_birth_control_decision_desc: "By maintaining a stockpile of condoms, diaphragms, silphium leaves, and other supplies, I can ensure that my dalliances are less likely to result in unwanted children."
 carn_start_birth_control_decision_tooltip: "Reduce your [fertility|E] at the cost of some [income|E] and [piety|E]"
 carn_start_birth_control_decision_confirm: "My body is ready"
 msg_carn_started_birth_control: "Started Birth Control"

 carn_stop_birth_control_decision: "Stop Birth Control"
 carn_stop_birth_control_decision_desc: "These artificial impediments have become too much of a burden in the bedroom. I will set them aside and let my passions roam wild and free, as nature intended."
 carn_stop_birth_control_decision_tooltip: "Stop reducing your [fertility|E] at the cost of [income|E] and [piety|E]"
 carn_stop_birth_control_decision_confirm: "My body is ready"
 msg_carn_stopped_birth_control: "Stopped Birth Control"


code:
l_english:

 game_concept_dominant: "Dominant"
 game_concept_dominant_short: "Dom"
 game_concept_dominants: "Dominants"
 game_concept_dominant_possessive: "Dominant's"
 game_concept_dominants_possessive: "Dominants'"
 game_concept_dominant_desc: "Often shortened to $game_concept_dominant_short$, a $game_concept_dominant$ is a [character|E] with a [relation|E] to a corresponding [submissive|E]. While specifics vary, the role of $game_concept_dominant$ typically involves in some way commanding or assuming control over the $game_concept_submissive$."

 game_concept_submissive: "Submissive"
 game_concept_submissive_short: "Sub"
 game_concept_submissives: "Submissives"
 game_concept_submissive_possessive: "Submissive's"
 game_concept_submissives_possessive: "Submissives'"
 game_concept_submissive_desc: "Often shortened to $game_concept_submissive_short$, a $game_concept_submissive$ is a [character|E] with a [relation|E] to a corresponding [dominant|E]. While specifics vary, the role of $game_concept_submissive$ typically involves in some way obeying or surrendering control to the $game_concept_dominant$."

 game_concept_slave: "Slave"
 game_concept_slaves: "Slaves"
 game_concept_slavery: "Slavery"
 game_concept_slave_possessive: "Slave's"
 game_concept_slaves_possessive: "Slaves'"
 game_concept_slave_desc: "A $game_concept_slave$ is a [character|E] that has been stripped of their rights and enslaved. They belong to an [slave_owner|E], who has a [strong_hook|E] on them and can buy or sell them on the [slave_market|E]. Additionally, [extramarital_sex|E] between a slave and their owner is legal.\n\nSlaves may not hold or inherit [titles|E], and any children born to a slave mother will also be slaves.\n\nIf a slave owner dies, ownership of slaves will pass to their [primary_heir|E].\n\nTo escape slavery, a slave must be freed by their owner through the $carn_free_slave_interaction$ [character_interaction|E]."

 game_concept_slave_owner: "Owner"
 game_concept_slave_owners: "Owners"
 game_concept_slave_owner_possessive: "Owner's"
 game_concept_slave_owners_possessive: "Owners'"
 game_concept_slave_owner_desc: "A [character|E] can be a legally recognized $game_concept_slave_owner$ of one or more [slaves|E]. Slave owners always have a [strong_hook|E] on their slaves and can buy or sell them on the [slave_market|E]. Additionally, [extramarital_sex|E] between a slave and their owner is legal.\n\nIf a slave owner dies, ownership of slaves will pass to their [primary_heir|E]."

 game_concept_slave_market: "Slave Market"
 game_concept_slave_market_desc: "[slaves|E], being property, can be bought and sold by other [characters|E] through the $carn_buy_slave_directly_interaction$ or $carn_sell_slave_interaction$ [interactions|E]. A character who buys a slave will become their [slave_owner|E].\n\nA slave with good [skills|E], [traits|E], or [claims|E] will sell for a much higher price. A [noble|E], young woman, or [GetTrait('eunuch_1').GetName( GetNullCharacter )] is especially prized."

 game_concept_prostitute: "Prostitute"
 game_concept_prostitutes: "Prostitutes"
 game_concept_prostitution: "Prostitution"
 game_concept_prostitute_possessive: "Prostitute's"
 game_concept_prostitutes_possessive: "Prostitutes'"
 game_concept_prostitute_desc: "A prostitute is a [character|E] who solicits payment for sex. Any character can use the $carn_work_as_prostitute_decision$ [decision|E] to become a prostitute, as long as their [faith|E] allows them to do so.\n\nThe performance of a prostitute is based on their [diplomacy|E], [intrigue|E], intelligence, and attractiveness. An especially skilled prostitute may advance as a [GetTrait('lifestyle_prostitute').GetName( GetNullCharacter )].\n\nWorking as a prostitute is legally sanctioned and not considered [extramarital_sex|E]. However, it may still result in [bastard|E] children or other consequences if the character is not careful..."

 game_concept_fetish: "Fetish"
 game_concept_fetishes: "Fetishes"
 game_concept_fetish_desc: "When a [character|E] gains the [GetTrait('deviant').GetName( GetNullCharacter )] [trait|E] or [secret|E], they will also get a random fetish if Carnalitas's Fetish System is enabled. You can see a character's publicly known fetishes by mousing over the icon next to their sexual orientation.\n\nFetishes are purely cosmetic by default, but mods may add features and content for characters with specific fetishes."

 game_concept_lactation: "Lactation"
 game_concept_lactating: "Lactating"
 game_concept_milk: "Milk"
 game_concept_milk_production: "Milk Production"
 game_concept_lactation_desc: "When Carnalitas's Lactation System is enabled, [characters|E] may have their milk production increased by pregnancy or other effects. This will cause them to start lactating for a period of time. Successive pregnancies allow a character to produce more milk and lactate for a longer period of time.\n\nLactation is purely cosmetic by default, but mods may add features and content for lactating characters."

 game_concept_anal: "Anal"
 game_concept_anal_desc: "The act of having sex involving the penetration of the anus."

 game_concept_sadism: "Sadism"
 game_concept_sadism_desc: "Gaining pleasure from inflicting pain on others."

 game_concept_masochism: "Masochism"
 game_concept_masochism_desc: "Gaining pleasure from experiencing pain."

 game_concept_bestiality: "Bestiality"
 game_concept_bestiality_desc: "The act of having sex with animals."

 game_concept_watersports: "Watersports"
 game_concept_watersports_desc: "Gaining pleasure from either pissing on, or being pissed on by someone."

 game_concept_scat: "Scat"
 game_concept_scat_desc: "Gaining pleasure from either shitting on, or being shat on by someone."

 game_concept_gore: "Gore"
 game_concept_gore_desc: "Gaining pleasure from the sight of blood, guts and gore."

 game_concept_foot_play: "Foot Play"
 game_concept_foot_play_desc: "Gaining pleasure from any acts (sexual or otherwise) involving feet."

 game_concept_bondage: "Bondage"
 game_concept_bondage_desc: "Gaining pleasure from either tying someone up, or being tied up."

 game_concept_domination: "Domination"
 game_concept_domination_desc: "$game_concept_dominant_desc$"

 game_concept_submission: "Submission"
 game_concept_submission_desc: "$game_concept_submissive_desc$"

 game_concept_raping: "Raping"
 game_concept_raping_desc: "The act of having sex with someone who is unwilling."

 game_concept_being_raped: "Being Raped"
 game_concept_being_raped_desc: "The act of having sex against your will."

 game_concept_lactation_fetish: "$game_concept_lactation$"
 game_concept_lactation_fetish_desc: "$game_concept_lactation_desc$"

 game_concept_unknown_fetish: "Unknown Fetish"
 game_concept_unknown_fetish_desc: "An unknown fetish. Whatever it is, it's probably fucked-up."


code:
l_english:

 rule_carn_std: "@carn_icon! #X Carnalitas:#! STD Transmission"
 setting_carn_std_enabled: "Default"
 setting_carn_std_enabled_desc: "No changes will be made to $trait_lovers_pox$ and the $trait_great_pox$."
 setting_carn_std_disabled: "#high Never#!"
 setting_carn_std_disabled_desc: "Characters will never contract $trait_lovers_pox$ or the $trait_great_pox$."

 rule_carn_sex_interaction: "@carn_icon! #X Carnalitas:#! $carn_sex_interaction$"
 setting_carn_sex_interaction_disabled: "Disabled"
 setting_carn_sex_interaction_disabled_desc: "Carnalitas's Character Interaction to have sex with a chosen character will be disabled."
 setting_carn_sex_interaction_enabled: "#high Enabled#!"
 setting_carn_sex_interaction_enabled_desc: "You can have sex with spouses, lovers, slaves, and so on through a Character Interaction. This reduces Stress and can be done once every [EmptyScope.ScriptValue('carn_sex_interaction_cooldown_base')|0] months."
 setting_carn_sex_interaction_no_cd: "#high No Cooldown#!"
 setting_carn_sex_interaction_no_cd_desc: "You can use the $carn_sex_interaction$ Character Interaction as much as you want. However, its game effects will only trigger once every [EmptyScope.ScriptValue('carn_sex_interaction_cooldown_base')|0] months."

 rule_carn_arousal_stress: "@carn_icon! #X Carnalitas:#! Arousal Causes Stress"
 setting_carn_arousal_stress_disabled: "Disabled"
 setting_carn_arousal_stress_disabled_desc: "Characters will not naturally gain stress over time. This may cause balance issues if you frequently $carn_sex_interaction$."
 setting_carn_arousal_stress_enabled: "#high Enabled#!"
 setting_carn_arousal_stress_enabled_desc: "Characters naturally gain stress over time. The stress gain is increased if $trait_lustful$ or $trait_rakish$, and absent if $trait_chaste$."

 rule_carn_pregnancy_complications: "@carn_icon! #X Carnalitas:#! Pregnancy Complications"
 setting_carn_pregnancy_complications_default: "Default"
 setting_carn_pregnancy_complications_default_desc: "No changes will be made to the risk of illness or death in pregnancy and childbirth."
 setting_carn_pregnancy_complications_never: "#high Never#!"
 setting_carn_pregnancy_complications_never_desc: "Characters will always have smooth pregnancy and childbirth without any illness, death, or other complications."

 rule_carn_birth_control: "@carn_icon! #X Carnalitas:#! Birth Control"
 setting_carn_birth_control_disabled: "Disabled"
 setting_carn_birth_control_disabled_desc: "Carnalitas's Decisions to use birth control will not be available."
 setting_carn_birth_control_any_gender: "#high Any Gender#!"
 setting_carn_birth_control_any_gender_desc: "Both male and female characters will be able to use birth control, reducing their fertility at the cost of income."
 setting_carn_birth_control_female_only: "#high Female Only#!"
 setting_carn_birth_control_female_only_desc: "Only female or futanari characters will be able to use birth control, reducing their fertility at the cost of income."
 setting_carn_birth_control_male_only: "#high Male Only#!"
 setting_carn_birth_control_male_only_desc: "Only male or futanari characters will be able to use birth control, reducing their fertility at the cost of income."
 setting_carn_birth_control_player_only: "#high Player Only#!"
 setting_carn_birth_control_player_only_desc: "Only player controlled characters will be able to use birth control, reducing their fertility at the cost of income."

 rule_carn_lactation: "@carn_icon! #X Carnalitas:#! Lactation System"
 setting_carn_lactation_disabled: "Disabled"
 setting_carn_lactation_disabled_desc: "Carnalitas's lactation system will be inactive."
 setting_carn_lactation_female_only: "#high Female Only#!"
 setting_carn_lactation_female_only_desc: "Pregnancy or mods can cause female and futanari characters to lactate."
 setting_carn_lactation_male_only: "#high Male Only#!"
 setting_carn_lactation_male_only_desc: "Mods can cause male characters to lactate."
 setting_carn_lactation_any_gender: "#high Any Gender#!"
 setting_carn_lactation_any_gender_desc: "Pregnancy or mods can cause characters of any gender to lactate."

 rule_carn_dt: "@carn_icon! #X Carnalitas:#! Body Part Traits"
 setting_carn_dt_disabled: "Disabled"
 setting_carn_dt_disabled_desc: "Characters will not spawn with congenital breast and penis size traits."
 setting_carn_dt_enabled: "#high Enabled#!"
 setting_carn_dt_enabled_desc: "Characters may spawn with congenital breast and penis size traits."

 rule_carn_dt_trait_names: "@carn_icon! #X Carnalitas:#! Body Part Trait Names"
 setting_carn_dt_trait_names_default: "Default"
 setting_carn_dt_trait_names_default_desc: "The breast and penis size traits of characters will be named '$trait_tits_big_1$,' '$trait_dick_big_1$,' and so on."
 setting_carn_dt_trait_names_immersive: "#high Immersive#!"
 setting_carn_dt_trait_names_immersive_desc: "The breast and penis size traits of characters will be named '$trait_tits_big_1_immersive$,' '$trait_dick_big_1_immersive$,' and so on."

 rule_carn_dt_dick_small: "@carn_icon! #X Carnalitas:#! Small Penis Desirability"
 setting_carn_dt_dick_small_bad: "Negative"
 setting_carn_dt_dick_small_bad_desc: "Small penises will be considered a negative congenital trait."
 setting_carn_dt_dick_small_good: "#high Positive#!"
 setting_carn_dt_dick_small_good_desc: "Small penises will be considered a positive congenital trait."

 rule_carn_dt_dick_big: "@carn_icon! #X Carnalitas:#! Large Penis Desirability"
 setting_carn_dt_dick_big_good: "Positive"
 setting_carn_dt_dick_big_good_desc: "Large penises will be considered a positive congenital trait."
 setting_carn_dt_dick_big_bad: "#high Negative#!"
 setting_carn_dt_dick_big_bad_desc: "Large penises will be considered a negative congenital trait."

 rule_carn_dt_tits_small: "@carn_icon! #X Carnalitas:#! Small Breasts Desirability"
 setting_carn_dt_tits_small_bad: "Negative"
 setting_carn_dt_tits_small_bad_desc: "Small breasts will be considered a negative congenital trait."
 setting_carn_dt_tits_small_good: "#high Positive#!"
 setting_carn_dt_tits_small_good_desc: "Small breasts will be considered a positive congenital trait."

 rule_carn_dt_tits_big: "@carn_icon! #X Carnalitas:#! Large Breasts Desirability"
 setting_carn_dt_tits_big_good: "Positive"
 setting_carn_dt_tits_big_good_desc: "Large breasts will be considered a positive congenital trait."
 setting_carn_dt_tits_big_bad: "#high Negative#!"
 setting_carn_dt_tits_big_bad_desc: "Large breasts will be considered a negative congenital trait."

 rule_carn_futa_trait_name: "@carn_icon! #X Carnalitas:#! Futanari Trait Name"
 setting_carn_futa_trait_name_futa: "Default"
 setting_carn_futa_trait_name_futa_desc: "A woman with both male and female sexual organs will be called a $carn_futanari$."
 setting_carn_futa_trait_name_hermaphrodite: "#high Immersive#!"
 setting_carn_futa_trait_name_hermaphrodite_desc: "A woman with both male and female sexual organs will be called a $carn_hermaphrodite$."

 rule_carn_futa_content: "@carn_icon! #X Carnalitas:#! Futanari Characters"
 setting_carn_futa_content_disabled: "Disabled"
 setting_carn_futa_content_disabled_desc: "Futanari characters will never randomly spawn. Futanari events and custom characters are disabled."
 setting_carn_futa_content_no_seeding: "#high No Seeding#!"
 setting_carn_futa_content_no_seeding_desc: "Futanari characters will never randomly spawn. Futanari events and custom characters may still appear."
 setting_carn_futa_content_very_rare: "#high Very Rare#!"
 setting_carn_futa_content_very_rare_desc: "There is a 0.1% random chance for a woman in the game world to be futanari."
 setting_carn_futa_content_rare: "#high Rare#!"
 setting_carn_futa_content_rare_desc: "There is a 0.5% random chance for a woman in the game world to be futanari."
 setting_carn_futa_content_uncommon: "#high Uncommon#!"
 setting_carn_futa_content_uncommon_desc: "There is a 2.5% random chance for a woman in the game world to be futanari."
 setting_carn_futa_content_common: "#high Common#!"
 setting_carn_futa_content_common_desc: "There is a 10% random chance for a woman in the game world to be futanari."
 setting_carn_futa_content_very_common: "#high Very Common#!"
 setting_carn_futa_content_very_common_desc: "There is a 25% random chance for a woman in the game world to be futanari."
 setting_carn_futa_content_always: "#high Always#!"
 setting_carn_futa_content_always_desc: "All women in the game world will be futanari."

 rule_carn_futa_trait_inheritance: "@carn_icon! #X Carnalitas:#! Futanari Trait Inheritance"
 setting_carn_futa_trait_inheritance_disabled: "Off"
 setting_carn_futa_trait_inheritance_disabled_desc: "Children of futanari do not have an increased chance of being futanari themselves."
 setting_carn_futa_trait_inheritance_enabled: "#high On#!"
 setting_carn_futa_trait_inheritance_enabled_desc: "The futanari trait is congenital, so children of futanari have a high chance of being futanari."

 rule_carn_fetishes: "@carn_icon! #X Carnalitas:#! Fetishes"
 setting_carn_fetishes_disabled: "Disabled"
 setting_carn_fetishes_disabled_desc: "Characters will not receive fetishes."
 setting_carn_fetishes_enabled: "#high Enabled#!"
 setting_carn_fetishes_enabled_desc: "Deviant characters will receive a fetish. Disabling some scene types will prevent their associated fetishes from appearing."

 rule_carn_slavery_content: "@carn_icon! #X Carnalitas:#! Slavery System"
 setting_carn_slavery_content_disabled: "Disabled"
 setting_carn_slavery_content_disabled_desc: "Carnalitas's Character Interactions related to slavery will not be available."
 setting_carn_slavery_content_enabled: "#high Enabled#!"
 setting_carn_slavery_content_enabled_desc: "Characters can be enslaved as an alternative to execution, turning them into property to be used, bought, or sold."
 setting_carn_slavery_content_require_acceptance: "#high Require Acceptance#!"
 setting_carn_slavery_content_require_acceptance_desc: "Characters can be enslaved, but only if they accept a Character Interaction. They may still be pressured into accepting."
 setting_carn_slavery_content_consensual_only: "#high Consensual Only#!"
 setting_carn_slavery_content_consensual_only_desc: "Characters can be enslaved, but only if they accept a Character Interaction without any duress or coercion."

 rule_carn_slavery_default_religious_doctrine: "@carn_icon! #X Carnalitas:#! Default Slavery Doctrines"
 setting_carn_slavery_default_religious_doctrine_historical: "Historical"
 setting_carn_slavery_default_religious_doctrine_historical_desc: "At the start of the game, $carn_doctrine_same_slavery_name$ will be Criminal and $carn_doctrine_other_slavery_name$ will be Accepted by default."
 setting_carn_slavery_default_religious_doctrine_accepted: "#high Always Accepted#!"
 setting_carn_slavery_default_religious_doctrine_accepted_desc: "At the start of the game, all forms of slavery will be Accepted by default."
 setting_carn_slavery_default_religious_doctrine_shunned: "#high Always Shunned#!"
 setting_carn_slavery_default_religious_doctrine_shunned_desc: "At the start of the game, all forms of slavery will be Shunned by default."
 setting_carn_slavery_default_religious_doctrine_criminal: "#high Always Criminal#!"
 setting_carn_slavery_default_religious_doctrine_criminal_desc: "At the start of the game, all forms of slavery will be Criminal by default."
 setting_carn_slavery_default_religious_doctrine_inverted: "#high Inverted#!"
 setting_carn_slavery_default_religious_doctrine_inverted_desc: "At the start of the game, $carn_doctrine_same_slavery_name$ will be Accepted and $carn_doctrine_other_slavery_name$ will be Criminal by default."

 rule_carn_prostitution_content: "@carn_icon! #X Carnalitas:#! Prostitution System"
 setting_carn_prostitution_content_disabled: "Disabled"
 setting_carn_prostitution_content_disabled_desc: "Carnalitas's Decisions related to prostitution will not be available."
 setting_carn_prostitution_content_any_gender: "#high Any Gender#!"
 setting_carn_prostitution_content_any_gender_desc: "Both male and female characters can use a Decision to become Prostitutes."
 setting_carn_prostitution_content_female_only: "#high Female Only#!"
 setting_carn_prostitution_content_female_only_desc: "Only female characters can use a Decision to become Prostitutes."
 setting_carn_prostitution_content_male_only: "#high Male Only#!"
 setting_carn_prostitution_content_male_only_desc: "Only male characters can use a Decision to become Prostitutes."

 rule_carn_prostitution_default_religious_doctrine: "@carn_icon! #X Carnalitas:#! Default Prostitution Doctrine"
 setting_carn_prostitution_default_religious_doctrine_shunned: "Shunned"
 setting_carn_prostitution_default_religious_doctrine_shunned_desc: "At the start of the game, prostitution will be Shunned by default."
 setting_carn_prostitution_default_religious_doctrine_accepted: "#high Accepted#!"
 setting_carn_prostitution_default_religious_doctrine_accepted_desc: "At the start of the game, prostitution will be Accepted by default."
 setting_carn_prostitution_default_religious_doctrine_criminal: "#high Criminal#!"
 setting_carn_prostitution_default_religious_doctrine_criminal_desc: "At the start of the game, prostitution will be Criminal by default."

 rule_carn_content_anal: "@carn_icon! #X Carnalitas:#! Anal Scenes"
 setting_carn_content_anal_disabled: "Off"
 setting_carn_content_anal_disabled_desc: "Sex scenes that have been given the 'anal' flag by their creator will not be displayed."
 setting_carn_content_anal_enabled: "#high On#!"
 setting_carn_content_anal_enabled_desc: "Sex scenes that have been given the 'anal' flag by their creator will be displayed."

 rule_carn_content_consent: "@carn_icon! #X Carnalitas:#! Non-Consensual Scenes"
 setting_carn_content_consent_dubcon: "Dubious Consent Only"
 setting_carn_content_consent_dubcon_desc: "Sex scenes that have been given the 'noncon' flag by their creator will not be displayed. 'Dubcon' scenes will still be displayed."
 setting_carn_content_consent_noncon: "#high Any#!"
 setting_carn_content_consent_noncon_desc: "Sex scenes that have been given the 'noncon' or 'dubcon' flag by their creator will be displayed."
 setting_carn_content_consent_always: "#high None#!"
 setting_carn_content_consent_always_desc: "Sex scenes that have been given the 'noncon' or 'dubcon' flag by their creator will not be displayed."

 rule_carn_content_painful: "@carn_icon! #X Carnalitas:#! Painful Scenes"
 setting_carn_content_painful_disabled: "Off"
 setting_carn_content_painful_disabled_desc: "Sex scenes that have been given the 'painful' flag by their creator will not be displayed."
 setting_carn_content_painful_enabled: "#high On#!"
 setting_carn_content_painful_enabled_desc: "Sex scenes that have been given the 'painful' flag by their creator will be displayed."

 rule_carn_content_bestiality: "@carn_icon! #X Carnalitas:#! Bestiality Scenes"
 setting_carn_content_bestiality_disabled: "Off"
 setting_carn_content_bestiality_disabled_desc: "Sex scenes that have been given the 'bestiality' flag by their creator will not be displayed."
 setting_carn_content_bestiality_enabled: "#high On#!"
 setting_carn_content_bestiality_enabled_desc: "Sex scenes that have been given the 'bestiality' flag by their creator will be displayed."

 rule_carn_content_watersports: "@carn_icon! #X Carnalitas:#! Watersports (Pee) Scenes"
 setting_carn_content_watersports_disabled: "Off"
 setting_carn_content_watersports_disabled_desc: "Sex scenes that have been given the 'watersports' flag by their creator will not be displayed."
 setting_carn_content_watersports_enabled: "#high On#!"
 setting_carn_content_watersports_enabled_desc: "Sex scenes that have been given the 'watersports' flag by their creator will be displayed."

 rule_carn_content_scat: "@carn_icon! #X Carnalitas:#! Scat (Feces) Scenes"
 setting_carn_content_scat_disabled: "Off"
 setting_carn_content_scat_disabled_desc: "Sex scenes that have been given the 'scat' flag by their creator will not be displayed."
 setting_carn_content_scat_enabled: "#high On#!"
 setting_carn_content_scat_enabled_desc: "Sex scenes that have been given the 'scat' flag by their creator will be displayed."

 rule_carn_content_gore: "@carn_icon! #X Carnalitas:#! Gore Scenes"
 setting_carn_content_gore_disabled: "Off"
 setting_carn_content_gore_disabled_desc: "Sex scenes that have been given the 'gore' flag by their creator will not be displayed."
 setting_carn_content_gore_enabled: "#high On#!"
 setting_carn_content_gore_enabled_desc: "Sex scenes that have been given the 'gore' flag by their creator will be displayed."


code:
l_english:

 guest_description.tits_big_good_1.desc:0 "A [GetTrait('tits_big_good_1').GetName( ROOT.Char )]"
 guest_description.tits_big_good_2.desc:0 "A [GetTrait('tits_big_good_2').GetName( ROOT.Char )]"
 guest_description.tits_big_good_3.desc:0 "A [GetTrait('tits_big_good_3').GetName( ROOT.Char )]"

 guest_description.dick_big_good_1.desc:0 "A [GetTrait('dick_big_good_1').GetName( ROOT.Char )]"
 guest_description.dick_big_good_2.desc:0 "A [GetTrait('dick_big_good_2').GetName( ROOT.Char )]"
 guest_description.dick_big_good_3.desc:0 "A [GetTrait('dick_big_good_3').GetName( ROOT.Char )]"

 guest_description.tits_small_good_1.desc:0 "A [GetTrait('tits_small_good_1').GetName( ROOT.Char )]"
 guest_description.tits_small_good_2.desc:0 "A [GetTrait('tits_small_good_2').GetName( ROOT.Char )]"
 guest_description.tits_small_good_3.desc:0 "A [GetTrait('tits_small_good_3').GetName( ROOT.Char )]"

 guest_description.dick_small_good_1.desc:0 "A [GetTrait('dick_small_good_1').GetName( ROOT.Char )]"
 guest_description.dick_small_good_2.desc:0 "A [GetTrait('dick_small_good_2').GetName( ROOT.Char )]"
 guest_description.dick_small_good_3.desc:0 "A [GetTrait('dick_small_good_3').GetName( ROOT.Char )]"


code:
l_english:
 carn_had_sex_with_effect.first_person.tt: "I lay with [carn_sex_partner.GetShortUIName]"
 carn_had_sex_with_effect.second_person.tt: "[carn_sex_partner.GetShortUIName] Lays with you"
 carn_had_sex_with_effect.third_person.tt: "[root.GetShortUIName] lays with [carn_sex_partner.GetShortUIName]"


code:
l_english:
 carn_slave_hook: "Slave"


code:
l_english:

 action_carn_can_sex_interaction: "You can $carn_sex_interaction$"
 action_carn_can_sex_interaction_label: "$action_carn_can_sex_interaction$"
 action_carn_can_sex_interaction_desc: "You can use the $carn_sex_interaction$ [character_interaction|E] to reduce [stress|E] or try for a baby, among other effects."
 action_carn_can_sex_interaction_click: "#I Click to $carn_sex_interaction$#!"
 action_carn_can_sex_interaction_combined_label: "To your [actor.Custom2('RelationToMe', recipient)] [recipient.GetUINameNoTooltip] ([recipient.GetOpinionOf(GetPlayer)|+=])"
 action_carn_can_sex_interaction_combined_group_label: "$action_carn_can_sex_interaction$"
 action_carn_can_sex_interaction_combined_group_name: "$action_carn_can_sex_interaction$"
 action_carn_can_sex_interaction_combined_group_description: "You can make love to one of your consorts or lovers to reduce [stress|E] or try for a baby, among other effects."

 action_carn_can_demand_free_illegal_slaves_interaction: "You can $carn_demand_free_illegal_slaves_interaction$"
 action_carn_can_demand_free_illegal_slaves_interaction_combined_group_label: "$action_carn_can_demand_free_illegal_slaves_interaction$"
 action_carn_can_demand_free_illegal_slaves_interaction_combined_group_name: "$action_carn_can_demand_free_illegal_slaves_interaction$"
 action_carn_can_demand_free_illegal_slaves_interaction_desc: "You can demand that [recipient.GetUIName] frees all illegal [slaves|E] [recipient.GetSheHe] owns."
 action_carn_can_demand_free_illegal_slaves_interaction_combined_group_description: "You can demand that one of your vassals frees all illegal [slaves|E] they own."
 action_carn_can_demand_free_illegal_slaves_interaction_label: "$action_carn_can_demand_free_illegal_slaves_interaction$ from [recipient.GetUINameNoTooltip]"
 action_carn_can_demand_free_illegal_slaves_interaction_combined_label: "From [recipient.GetUINameNoTooltip]"
 action_carn_can_demand_free_illegal_slaves_interaction_click: "#I Click to $carn_demand_free_illegal_slaves_interaction$#!"
 action_carn_can_demand_free_illegal_slaves_interaction_unimportant: "@warning_icon! #X [recipient.GetSheHe|U] is not an important vassal#!"
 action_carn_can_demand_free_illegal_slaves_interaction_combined_unimportant: "@warning_icon! #X These vassals are not important vassals#!"


code:
l_english:
 carn_sex_interaction: "Make Love"
 carn_sex_interaction_desc: "Spend an intimate moment with [recipient.GetShortUINameNoTooltip]"
 carn_sex_interaction_effect_cd_tt: "#weak No game effects will happen because you have used a similar interaction in the last [EmptyScope.ScriptValue('carn_sex_interaction_cooldown_base')|0] months#!"
 carn_sex_interaction_not_attracted_to_warning_tt: "#X You are not attracted to [recipient.GetShortUINameNoTooltip]#!"

 carn_enslave_interaction: "Enslave"
 carn_enslave_interaction_desc: "Turn [recipient.GetShortUINameNoTooltip] into your [slave|E]"
 carn_enslave_actor_diplomacy: "Your [diplomacy_skill|E]: $VALUE|=+0$"
 carn_enslave_recipient_is_your_prisoner: "[recipient.GetShortUIName|U] wants to leave [prison|E]: $VALUE|=+0$"
 carn_enslave_recipient_is_contrite: "[recipient.GetShortUIName|U] is [GetTrait('contrite').GetName( GetPlayer )]: $VALUE|=+0$"
 carn_enslave_recipient_is_humble: "[recipient.GetShortUIName|U] is [GetTrait('humble').GetName( GetPlayer )]: $VALUE|=+0$"
 carn_enslave_recipient_is_arrogant: "[recipient.GetShortUIName|U] is [GetTrait('arrogant').GetName( GetPlayer )]: $VALUE|=+0$"
 carn_enslave_recipient_is_fickle: "[recipient.GetShortUIName|U] is [GetTrait('fickle').GetName( GetPlayer )]: $VALUE|=+0$"
 carn_enslave_recipient_is_noble: "[recipient.GetShortUIName|U] is a [noble|E]: $VALUE|=+0$"
 carn_enslave_recipient_would_lose_titles: "[recipient.GetShortUIName|U] would lose [titles|E]: $VALUE|=+0$"
 carn_enslave_shunned_in_recipient_faith: "$carn_doctrine_same_slavery_name$ is [shunned|E] in [recipient.GetFaith.GetAdherentNamePluralNoTooltip|U]: $VALUE|=+0$"
 carn_enslave_crime_in_recipient_faith: "$carn_doctrine_same_slavery_name$ is [criminal|E] in [recipient.GetShortUIName|U]'s [faith|E]: $VALUE|=+0$"
 carn_enslave_you_have_no_reason: "You do not have an [execute_reason|E]: $VALUE|=+0$"
 carn_is_allowed_to_enslave_desc: "[recipient.GetShortUIName|U] is a known [criminal|E] #weak ([recipient.GetExecuteReasons( actor.Self )])#!, allowing me to enslave [recipient.GetHerHim] without being viewed as a [tyrant|E]"
 carn_is_allowed_to_enslave_hostile_religion_desc: "[recipient.GetShortUINamePossessive|U] faith, [recipient.GetFaith.GetName], is considered to be either #V Hostile#! or #V Evil#! by my faith, allowing me to enslave [recipient.GetHerHim] without being viewed as a [tyrant|E]."

 carn_mass_enslave_interaction: "Mass Enslave"
 carn_mass_enslave_interaction_tooltip_1: "Enslave all eligible characters in your dungeons which it is accepted by your [faith|E] to enslave."
 carn_mass_enslave_interaction_tooltip_2: "This will upset the family and realm of the characters enslaved."

 carn_free_slave_interaction: "Free Slave"
 carn_free_slave_interaction_desc: "Free [recipient.GetShortUINameNoTooltip] from [slavery|E]"
 carn_free_slave_offer: "In recognition of your service, I am emancipating you from your bonds."
 carn_free_slave_offer_conditional: "I am willing to release you from slavery, but not unconditionally..."

 carn_slave_negotiate_freedom_interaction: "Negotiate Freedom"
 carn_slave_negotiate_freedom_interaction_desc: "Ask [recipient.GetShortUINameNoTooltip] to free you from [slavery|E]"
 carn_slave_negotiate_freedom_offer: "I know that you are a forgiving master. Would you release me from bondage on these terms?"
 carn_slave_negotiate_freedom_convert_faith: "Convert to [recipient.GetFaith.GetName]"
 carn_slave_negotiate_freedom_renounce_claims: "[actor.GetShortUIName|U] loses all [claims|E] on Titles in [recipient.GetShortUINamePossessive] Realm"

 carn_demand_free_illegal_slaves_interaction: "Demand Manumission"
 carn_demand_free_slaves_interaction_desc: "Demand that [recipient.GetShortUINameNoTooltip] free the [illegal|E] [slaves|E] they own"
 carn_demand_free_illegal_slaves_is_crime: "\nRefusing to free illegal slaves is a [crime|E]"
 carn_demanded_manumission: "Demanded Manumission"
 carn_refused_free_illegal_slaves_opinion: "Refused Manumission Demand"

 carn_seize_slave_interaction: "Seize Slave"
 carn_seize_slave_interaction_desc: "Take [recipient.GetShortUINameNoTooltip] as your own [slave|E]"
 carn_wants_to_be_liege_slave: "Wants their current Owner: $VALUE|=+0$"
 carn_wants_to_be_your_slave: "Wants you as their Owner: $VALUE|=+0$"

 carn_buy_slave_directly_interaction: "Buy Slave"
 carn_buy_slave_directly_interaction_desc: "Buy a [slave|E] for [gold|E]"
 recipient_secondary_carn_buy_slave_directly_interaction: "Slave"

 carn_buy_slave_on_market_interaction: "Browse Slave Market"
 carn_buy_slave_on_market_interaction_desc: "Browse all available [slaves|E] for sale on the [slave_market|E]"
 actor_secondary_carn_buy_slave_on_market_interaction: "Buyer"

 carn_sell_slave_interaction: "Sell Slave"
 carn_sell_slave_interaction_desc: "Sell [recipient.GetShortUINameNoTooltip] on the [slave_market|E] for #high [gold_i][SCOPE.ScriptValue('carn_scope_recipient_carn_slave_price_value')|0]#!"
 recipient_secondary_carn_sell_slave_interaction: "Buyer"
 carn_buyer_not_enough_gold_for_slave_price_tooltip: "Pays #high [gold_i][SCOPE.ScriptValue('carn_scope_buyer_current_gold_value')|0]#! to [seller.GetShortUINameNoTooltip] #weak (cannot afford full price of [gold_i][SCOPE.ScriptValue('carn_scope_slave_price_value')|0])#!"

 carn_secondary_recipient_is_my_knight_reason: "[secondary_recipient.GetShortUIName|U] is my [recipient.Custom('KnightCulture')]: $VALUE|=+0$"
 carn_secondary_recipient_is_my_councillor_reason: "[secondary_recipient.GetShortUIName|U] is my [councillor|E]: $VALUE|=+0$"
 carn_secondary_recipient_is_my_friend_reason: "[secondary_recipient.GetShortUIName|U] is my [friend|E]: $VALUE|=+0$"
 carn_secondary_recipient_is_my_lover_reason: "[secondary_recipient.GetShortUIName|U] is my [lover|E]: $VALUE|=+0$"
 carn_secondary_recipient_is_my_crush_reason: "[secondary_recipient.GetShortUIName|U] is my [crush|E]: $VALUE|=+0$"
 carn_secondary_recipient_is_my_soulmate_reason: "[secondary_recipient.GetShortUIName|U] is my [soulmate|E]: $VALUE|=+0$"

 carn_msg_enslave: "Slave Taken"
 carn_msg_slave_sold: "Slave Sold"
 carn_msg_slave_freed: "Slave Freed"
 carn_msg_scope_recipient_becomes_your_slave_desc: "[recipient.GetTitledFirstName] has become your [slave|E]"
 carn_msg_scope_slave_becomes_your_slave_desc: "[slave.GetTitledFirstName] has become your [slave|E]"
 carn_msg_scope_new_slave_becomes_your_slave_desc: "[new_slave.GetTitledFirstName] has become your [slave|E]"
 carn_msg_prev_becomes_your_slave_desc: "[PREV.Char.GetTitledFirstName] has become your [slave|E]"
 carn_msg_scope_slave_is_no_longer_your_slave_desc: "[slave.GetTitledFirstName] is no longer your [slave|E]"

 carn_force_start_prostitution_interaction: "Start Prostitution"
 carn_force_start_prostitution_interaction_desc: "Force [recipient.GetShortUINameNoTooltip] to earn [gold|E] for you as a [prostitute|E]"

 carn_force_stop_prostitution_interaction: "Stop Prostitution"
 carn_force_stop_prostitution_interaction_desc: "Stop [recipient.GetShortUINameNoTooltip] from working as a [prostitute|E]"

 carn_rape_interaction: "Rape"
 carn_rape_interaction_desc: "Have your way with [recipient.GetShortUINameNoTooltip]"
 carn_rape_effect_not_attracted_to_warning_tt: "#X You are not attracted to [carn_rape_victim.GetShortUINameNoTooltip]#!"


code:
l_english:

 carn_msg_started_lactating: "Started Lactating"
 carn_msg_stopped_lactating: "Stopped Lactating"
 carn_msg_milk_production_increased: "Milk Production Increased"
 carn_msg_milk_production_decreased: "Milk Production Decreased"

 carn_milk_production_notification_desc: "You are now producing [SCOPE.Custom('CarnMilkProductionDescription')] [milk|E]"

 carn_stopped_lactating_notification_desc: "You are no longer producing [milk|E]"

 carn_starts_lactating_tooltip: "Starts [lactating|E]"
 carn_stops_lactating_tooltip: "Stops [lactating|E]"
 carn_milk_production_increases_tooltip: "[milk_production|E] increases"
 carn_milk_production_decreases_tooltip: "[milk_production|E] decreases"