law_group_name = {
	
	### brief = default ( database key, optional )
	# New rulers will use this law by default, provided its "should_start_with" trigger
	# returns true or is undefined
	#
	default = law_name

	### brief: cumulative ( bool, optional )
	# If set, each subsequent law in the group will provide all effects of the previous law
	# default = no
	#
	cumulative = no

	### brief: flag ( flag )
	# See below for flags with special treatment in code. These flags may also be checked
	# in the data/GUI system with LawGroup.HasFlag('some_arbitrary_flag')
	#
	flag = some_arbitrary_flag

	### brief: cumulative ( bool, optional )
	# If set, this law group is considered part of the Treasury Budget set, and will be displayed within a specific
	# budget interface.
	# default = no
	#
	is_treasury_budget_group = no

	### brief: can_change_law_group ( trigger )
	# Optional trigger for law groups that maybe some rulers should see but cant change
	# Default is leaving this empty - and then it will always be true
	# If this trigger fails - the lawgroup will still be visible but can't be changed by the ruler
	#
	can_change_law_group = { }

	law_name = {

		### brief: can_keep ( trigger )
		# Requirements for keeping the law. If this invalidates, the law will
		# be replaced with the default law (see own section) within a month.
		# Also checked after changing faith since doctrinal changes are likely
		# to invalidate laws. Always true if not specified.
		# Root scope = ruler with the law
		#
		can_keep = { }

		### brief: can_have ( trigger )
		# Requirements for adopting the law in the ruler's scope. If this is true,
		# the character is allowed to adopt the law and the law will show as
		# available (but it can be currently disabled if can_pass is false).
		# Always true if not specified.
		# Root scope = ruler for whom we are checking the law
		#
		can_have = { }

		### brief: can_pass ( trigger )
		# Requirements for adopting the law in the ruler's scope. For more
		# temporary conditions, e.g. being at war ("I can have the law, but
		# can't pass it right now"). Always true if not specified.
		# Root scope = ruler for whom we are checking the law
		#
		can_pass = { }

		### brief: should_start_with ( trigger )
		# If these conditions are true, this is a valid law for a ruler to start
		# with. Note that it always includes the can_keep check.
		# Root scope = ruler for whom we are checking the law
		#
		should_start_with = { }

		### brief: can_title_have ( trigger )
		# Requirements for titles being able to have this law. Always false if
		# not specified.
		# Root scope = title for which we are checking the law
		#
		can_title_have = { }

		### brief: can_realm_have ( trigger )
		# Requirements for characters being able to apply this law at realm level.
		# Always false if not specified.
		# By default, the following succession orders imply they can be applied to the whole realm:
		#	* inheritance
		#	* theocracy
		#	* company
		#	* generate
		#	* appointment
		# Root scope = character for which we are checking the law
		#
		can_realm_have = { }

		### brief: should_show_for_title ( trigger )
		# Should this law be shown in the UI for titles?
		#
		should_show_for_title = { }

		### brief: pass_cost ( scripted cost )
		# The cost of enacting this law
		# Root scope = ruler wanting to pass the law
		#
		pass_cost = { gold/piety/prestige = ... }

		### brief: revoke_cost ( scripted cost )
		# The cost of revoking or clearing this law
		# Root scope = ruler wanting to revoke the law
		#
		revoke_cost = { gold/piety/prestige = ... }

		### brief: modifier ( character modifier )
		# Modifier applied to the ruler when this law is active
		#
		modifier = { }

		### brief: flag ( flag )
		# See below for flags treated specially. Can be checked in script
		# with has_realm_law_flag = some_arbitrary_flag.
		# See below for flags treated specially in code.
		#
		flag = some_arbitrary_flag

		### brief: triggered_flag ( flag )
		# Checks and adds flag only if the trigger's condition is met.
		# Both trigger and flag *must* be specified within this block.
		#
		triggered_flag = {

			# Some trigger, root is the ruler character scope
			#
			trigger = { ... }

			# See below for flags treated specially in code. Can be checked in
			# script with has_realm_law_flag = some_arbitrary_flag
			#
			flag = some_arbitrary_flag
		}

		### brief: shown_in_encyclopedia ( bool, optional )
		# If this law should show up in the Encyclopedia
		# default = yes
		#
		shown_in_encyclopedia = yes

		### brief: on_pass ( effect )
		# Effect run just before law change.
		# Effect run on the ruler when the law is added. Does *NOT* get run
		# when default laws are initialized, nor when inheriting a law from
		# someone else.
		# Root = ruler in question
		# If this is done on a title, the title is accessible as scope:title
		#
		on_pass = { }

		### brief: on_after_pass ( effect )
		# Effect run just after law change.
		# Effect run on the ruler when the law is added. Does *NOT* get run
		# when default laws are initialized, nor when inheriting a law from
		# someone else.
		# Root = ruler in question
		# If this is done on a title, the title is accessible as scope:title
		#
		on_after_pass = { }

		### brief: on_revoke ( effect )
		# Effect run on ruler when the law is removed. Does *NOT* get run when
		# law is removed due to inheriting a law from someone else.
		# Root = ruler in question
		# If this is done on a title, the title is accessible as scope:title
		#
		on_revoke = { }

		### brief: succession ( struct, optional )
		# Succession rules. Any new law with a rule set will override the
		# previous law's rule set.
		# Overriding is in law definition order
		#
		succession = {

			### brief: order_of_succession ( enum )
			# Which order of succession ( provided by code ) does this law use?
			#
			# Options:
			#	inheritance
			#	election
			#	appointment ( requires traversal, division and rank be undefined )
			#	theocratic
			#	company
			#	generate
			#	generate_from_template 
			#	player_heir
			#	noble_family
			#
			order_of_succession = inheritance

			### brief: title_division ( enum )
			# Used to determine how titles are split during succession
			# Requires order_of_succession = inheritance or noble_family
			#
			# Options:
			#	partition ( only available when traversal_order = children )
			#	single_heir ( only valid for inheritance and noble_family order_of_succession )
			#
			title_division = partition

			### brief: traversal_order ( enum )
			# Determines which set of characters is considered when building
			# the line of succession.
			# 
			# Options:
			#	children( may only be defined if title_division = partition )
			#	dynasty
			#	dynasty_house
			#
			traversal_order = children/dynasty_house/dynasty

			### brief: rank ( enum )
			# Determines how characters in the line of succession are sorted
			#
			# Options:
			#	oldest
			#	youngest
			#
			rank = oldest

			### brief: pool_character_config ( database key, situational )
			# Entry in common/pool_character_selectors, used when choosing a
			# character from the pool or generating a new character.
			# Only available for theocratic, company, and generate.
			#
			pool_character_config = key

			### brief: election_type ( database key, situational )
			# Entry in common/succession_election, used to determine which type
			# of election should be used for succession.
			# Only available for election.
			#
			election_type = key

			### brief: appointment_type ( database key, situational )
			# Entry in common/succession_appointment, used to determine which type
			# of appointment should be used for succession.
			# Only available for appointment.
			#
			appointment_type = key


			### Generic Rules

			### brief: gender_law ( enum, optional )
			# Used to determine which gender(s) are valid for succession.
			#
			# Options:
			#	male_only
			#	male_preference
			#	equal
			#	female_preference
			#	female_only
			#
			gender_law = equal

			### brief: gender_law ( enum, optional )
			# Used to determine which faith(s) are valid for succession.
			# If no character fulfilling this requirement is found, the restriction
			# is ignored (but titles with the flag destroy_if_invalid_heir = yes
			# will be destroyed).
			#
			# Options:
			#	same_faith
			#	same_religion
			#	same_family
			#
			faith = same_faith

			### brief: create_primary_tier_titles ( bool, optional )
			# If set and under partition, titles you can create of your primary tier
			# ( up to your number of secondary heirs ) will be created for free, 
			# resulting in a more split-up realm
			# default = no
			#
			create_primary_tier_titles = no

			### brief: primary_heir_minimum_share ( fixed point, optional )
			# If defined, the primary heir will get at least this portion of
			# titles, which means if there's a lot of heirs the primary still
			# gets a guaranteed amount of land
			#
			primary_heir_minimum_share = 0.5

			### brief: exclude_rulers ( bool, optional )
			# If set, the title can not be inherited by rulers (anyone with titles)
			# default = no
			#
			exclude_rulers = no

			### brief: limit_to_courtiers ( bool, optional )
			# If set, only immediate courtiers and away courtiers of a ruler
			# will be allowed to inherit
			# default = no
			#
			limit_to_courtiers = no
		}

		### brief: ai_will_do ( value )
		# Script value in the ruler scope. If above 0, the AI will enact this
		# law if able. Law enactment is checked in the RARE_TASK_TICK. If multiple
		# laws are possible, the AI will enact the one with the highest score.
		# Root scope = ruler in question
		#
		ai_will_do = { ... }
	}

	# Multiple laws can be defined in a single law group.
	another_law_name = {}
}

### NOTES ###

### Inheritance ###
Any heir that goes up one or more tier due to inheritance gets the laws of the dead ruler.
Note that currently the law conditions are not checked in any way for law inheritance.

### Default law ###
All rulers have a single law from each group.
If a group has a default set, that law will be checked first.
Otherwise, or if it is invalid, the laws are checked in definition order.
The first checked law where "should_start_with" returns true (or does not exist) gets used. Note that "can_pass" is ignored entirely when determining a default law.
When a default law is set, "on_pass" is *not* executed

### Title Succession Laws ###
Laws are usually defined for realm. However some succession laws are valid for titles.
This is primary based on order_of_succession:

	Title only:
		player_heir
		election
		noble_family
		generate_from_template
	Realm only:
		inheritance ( title_division = partition )
		theocratic
		company
		generate
	Realm & Title:
		inheritance ( title_division = single_heir )
		appointment

### Associated Localization ###
The key of the law will be used as its name. E.G., law_name: "Law Name"
The key plus "_effects" can optionally be defined to provide custom effects. E.G., law_name_effects: "Does some law thingy"
The key plus "_effects_not_in_prev" can optionally be defined to provide custom effects that should *not* be included when listing effects inherited from earlier laws. E.G., law_name_effects_not_in_prev: "Does some law thingy"

CHARACTER.GetActiveLawInGroupWithFlag('realm_law') - Will get the character's active law in a group. The group must have the given flag. Note that it does not work for dead characters

### Hardcoded Flags ###
Some flags have special meaning, and are used by the game code.

Law Groups:
flag = realm_law - Will show up in My Realm window

Laws:
flag = titles_cannot_leave_realm_on_succession - Disables titles leaving realm when received on succession by someone outside the realm - the respective heirs will be disqualified from succession
flag = men_can_have_multiple_spouses - Allows multiple spouses (if also allowed by faith)
flag = men_can_have_consorts - Allows consorts (if also allowed by faith)
flag = women_can_have_multiple_spouses - Allows multiple spouses (if also allowed by faith)
flag = women_can_have_consorts - Allows consorts (if also allowed by faith)
