CK3 DatabaseCrusader Kings III · 1.20.1.2 “Crozier” · unofficial
Silk & Silverout Tue, Nov 17What's free, what needs the DLC, price →

Scripted effect

education_complete_notification_effect

education_complete_notification_effect = yes

game/common/scripted_effects/00_education_effects.txt, line 480 (181 lines). No parameters.

education_complete_notification_effect is a scripted effect in Crusader Kings III, written at line 480 of its file. It takes no parameters: education_complete_notification_effect = yes. The game's script calls it in 5 places, among them Coming of Age (event coming_of_age.0001), Coming of Age (event coming_of_age.0002) and Coming of Age (event coming_of_age.0003). Patch 1.20.1.2, from game/common/scripted_effects/00_education_effects.txt.

The comment above it in the file

Effect to identify characters for the "Education Completed" notification events

What it does

  • If any relation › One random relation:
  • Every Parent:
    • Where:
      • NOT = { scope:parent_guardian ?= this }
    • If

      • One of these

        • has_relation_favorite_child = scope:educated_child
        • or

          scope:educated_child:
          • One of these

            • Is a ruler
            • or

              is_primary_heir_of = prev
            • or

              is_player_heir_of = prev
            • or

              None of these

              • Sibling (at least 2):
                • is_alive = yes
                • age >= scope:educated_child.age

      Then

      Otherwise

  • If not: Is Lowborn › Every player:
    • Where:
      • scope:educated_child.dynasty ?= dynasty
      • NOT = { is_parent_of = scope:educated_child }
      • NOT = { scope:parent_guardian ?= this }
      • One of these

        • scope:educated_child.liege ?= this
        • or

          scope:educated_child.employer ?= this
        • or

          scope:educated_child.court_owner ?= this
    • scope:educated_child:
  • Their liege:
    • If

      • Is played by a person
      • is_employer_of = scope:educated_child
      • NOT = { scope:educated_child.dynasty ?= dynasty }
      • NOT = { is_parent_of = scope:educated_child }
      • NOT = { scope:parent_guardian ?= this }

      Then

• the game's own tooltip text · ◦ our reading of the script line · code the script where neither exists

“They” is whatever it runs on (the scope it is called in). The scripted triggers and effects it calls link to their own pages; $PARAMETERS$ stay as written: each call fills them in.

The script as written (120 lines of game script)
education_complete_notification_effect = {
	save_scope_as = educated_child
	if = {
		limit = {
			any_relation = { type = guardian }
		}
		random_relation = {
			type = guardian
			save_scope_as = current_guardian
			if = {
				limit = { is_parent_of = root }
				save_scope_as = parent_guardian
				trigger_event = coming_of_age.1001
			}
			else = {
				save_scope_as = guardian
				if = {
					limit = {
						scope:educated_child = {
							any_parent = { is_alive = no }
							any_parent = { is_alive = yes }
						}
					}
					random_parent = {
						limit = { is_alive = yes }
						save_scope_as = living_parent
					}
					random_parent = {
						limit = { is_alive = no }
						save_scope_as = dead_parent
					}
					trigger_event = coming_of_age.1003 #Event for non-parent guardian when one parent of the child is dead
				}
				else_if = {
					limit = {
						scope:educated_child = {
							any_parent = {
								is_alive = yes
								count = 2
							}
						}
					}
					scope:educated_child.father = { save_scope_as = father }
					scope:educated_child.mother = { save_scope_as = mother }
					trigger_event = coming_of_age.1004 #Event for non-parent guardian when both parents are alive
				}
				else_if = {
					limit = {
						OR = {
							NOT = { exists = scope:educated_child.father }
							NOT = { exists = scope:educated_child.mother }
						}
					}
					if = {
						limit = {
							exists = scope:educated_child.father
						}
						scope:educated_child.father = {
							save_scope_as = parent
						}
					}
					if = {
						limit = {
							exists = scope:educated_child.mother
						}
						scope:educated_child.mother = {
							save_scope_as = parent
						}
					}
					if = {
						limit = {
							NOT = { exists = scope:parent }
						}
						trigger_event = coming_of_age.1005
					}
					else = {
						trigger_event = coming_of_age.1003
					}
				}
				else = {
					scope:educated_child.father = { save_scope_as = father }
					scope:educated_child.mother = { save_scope_as = mother }
					trigger_event = coming_of_age.1005 #Event for non-parent guardian when both parents are dead
				}
			}
			hidden_effect = { # Hidden to avoid duplicate effect messages
				#Relationship back-up clean-up
				remove_guardian_effect = {
					GUARDIAN = scope:current_guardian
					WARD = scope:educated_child
					RETURN_WARD = no
					HIDE_OPINION = no
				}
			}
		}
	}
	every_parent = {
		limit = {
			NOT = { scope:parent_guardian ?= this }
		}
		if = {
			limit = {
				OR = {
					has_relation_favorite_child = scope:educated_child
					scope:educated_child = {
						OR = {
							is_ruler = yes
							is_primary_heir_of = prev
							is_player_heir_of = prev
							NOT = {
								any_sibling = {
									count >= 2
									is_alive = yes
									age >= scope:educated_child.age
								}
							}
						}
					}
				}
			}

As written in game/common/scripted_effects/00_education_effects.txt.

The first 120 of its 181 lines; the rest is in game/common/scripted_effects/00_education_effects.txt from line 480.

Where it is used

Every place in common/, events/ and history/ that calls education_complete_notification_effect.

Events (5)

Source: game/common/scripted_effects/00_education_effects.txt and every file of common/, events/ and history/ that calls it, Crusader Kings III 1.20.1.2.

Spotted a mistake on this page?