I do believe the relevant event that was added in the most recent patch that has utterly broken the way how courtiers pick up lovers is LT.61002, I can't really read code that well but in the bug reports thread in the forums there are two people who have submitted bugs that link to this specific event that breaks the logic. I think it's just not written well the line of code, it doesn't take into account Characters being Chaste, Shy, Zealous, married, or even of being the correct gender/orientation. Attempting to parse it through with my untrained eyes I kinda gathered that the only way this event doesn't fire is if the two characters are not friends with one another, rivals with one another, or either one of them already has a lover. Then it does another check where the opinions of one another I am only guessing must be between....5-15? Which is pretty stupidly low if that is the case. I'll dump the file event here and hopefully somebody can make some sense of it.
#Relationships
character_event = {
id = LT.61002
hide_window = yes
is_triggered_only = yes
trigger = {
ai = no
any_courtier = {
is_landed = no
prisoner = no
is_adult = yes
count = 2
AND = {
has_lover = no
NOT = {
any_rival = {
always = yes
}
}
NOT = {
any_friend = {
always = yes
}
}
}
}
}
immediate = {
random = {
chance = 75
modifier = {
factor = 0.5
any_courtier = {
is_landed = no
prisoner = no
is_adult = yes
count = 4 #More courtiers that are lonely
AND = {
has_lover = no
NOT = {
any_rival = {
always = yes
}
}
NOT = {
any_friend = {
always = yes
}
}
}
}
}
break = yes
}
random_courtier = {
limit = {
is_landed = no
prisoner = no
is_adult = yes
AND = {
has_lover = no
NOT = {
any_rival = {
always = yes
}
}
NOT = {
any_friend = {
always = yes
}
}
}
}
save_event_target_as = courtier_1
}
random_courtier = {
limit = {
NOT = { CHARACTER = event_target:courtier_1 }
is_landed = no
prisoner = no
is_adult = yes
AND = {
has_lover = no
NOT = {
any_rival = {
always = yes
}
}
NOT = {
any_friend = {
always = yes
}
}
}
}
save_event_target_as = courtier_2
}
event_target:courtier_1 = {
random_list = {
40 = {
trigger = {
NOT = { is_lover = event_target:courtier_2 }
NOT = { is_friend = event_target:courtier_2 }
NOT = { opinion = { who = event_target:courtier_2 value = 5 } }
}
add_lover = event_target:courtier_2
}
10 = {
modifier = {
factor = 2
opinion = { who = event_target:courtier_2 value = 5 }
}
modifier = {
factor = 2
opinion = { who = event_target:courtier_2 value = 15 }
}
add_friend = event_target:courtier_2
}
10 = {
modifier = {
factor = 2
NOT = { opinion = { who = event_target:courtier_2 value = 5 } }
}
modifier = {
factor = 2
NOT = { opinion = { who = event_target:courtier_2 value = -15 } }
}
add_rival = event_target:courtier_2
p.s. Sorry if I made a real long post, I am not skilled in forum posting