Scripted effect · Friends and Foes files
house_feud_start_effect
house_feud_start_effect = { ACTOR = … ATTACKER = … REASON = … TARGET = … VICTIM = … }game/common/scripted_effects/03_bp1_scripted_effects.txt, line 6 (240 lines). Parameters: $ACTOR$, $ATTACKER$, $REASON$, $TARGET$, $VICTIM$.
house_feud_start_effect is a scripted effect in Crusader Kings III, in the Friends and Foes files, written at line 6 of its file. A call passes 5 parameters: ACTOR, ATTACKER, REASON, TARGET and VICTIM. The game's script calls it in 25 places, among them … True … (event bp1_house_feud.0006), A … Enemy (event bp1_house_feud.0004) and A … Honor (event bp1_house_feud.0013). Patch 1.20.1.2, from game/common/scripted_effects/03_bp1_scripted_effects.txt.
The comment above it in the file
Start Feud, set variables, modifiers, relations, and stress
What it does
If
scope:starter_house_head.house != scope:house_feud_rival.househouse_relation_is_valid_to_start_trigger = { HOUSE = scope:starter_house_head.house OTHER_HOUSE = scope:house_feud_rival.house }
Then
- scope:starter_house_head › Their house:
set_house_relation = { … }
scope:starter_house_head:If
has_relation_rival = scope:house_feud_rivalNOT = { has_relation_nemesis = scope:house_feud_rival }can_set_relation_nemesis_trigger = { CHARACTER = scope:house_feud_rival }
Then
- Gains a Nemesis
- Stress and fulfillment impact: by trait: Vengeful -15
house_feud_forgiving_stress_effect = yes
- scope:relation › Every relation house › Every house member:
scope:starter_house_head:create_character_memory = { … }
• 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)
house_feud_start_effect = {
# Save scopes
$ACTOR$.house.house_head = { save_scope_as = starter_house_head }
$TARGET$.house.house_head = { save_scope_as = house_feud_rival }
$ATTACKER$ = { save_scope_as = house_feud_attacker }
$VICTIM$ = { save_scope_as = house_feud_victim }
# Save extra scopes if relevant
save_scope_value_as = {
name = house_feud_reason
value = flag:$REASON$
}
if = {
limit = {
scope:house_feud_reason = flag:competing_claim
NOT = { exists = scope:house_feud_claim }
}
scope:house_feud_victim = {
ordered_claim = {
limit = { any_claimant = { this = scope:house_feud_attacker } }
order_by = tier
save_scope_as = house_feud_claim
}
}
}
if = {
limit = {
scope:starter_house_head.house != scope:house_feud_rival.house
house_relation_is_valid_to_start_trigger = {
HOUSE = scope:starter_house_head.house
OTHER_HOUSE = scope:house_feud_rival.house
}
}
# Save target House for reference
scope:starter_house_head ?= {
house = {
set_house_relation = {
target = scope:house_feud_rival.house
level = feud
description = house_relation_reason_feud_$REASON$
save_scope_as = relation
}
}
scope:relation ?= {
set_variable = {
name = house_feud_cooldown
years = 25
}
}
}
scope:starter_house_head ?= {
# Relations: Nemesis if already Rivals, else Rival
if = {
limit = {
has_relation_rival = scope:house_feud_rival
NOT = { has_relation_nemesis = scope:house_feud_rival }
can_set_relation_nemesis_trigger = { CHARACTER = scope:house_feud_rival }
}
set_relation_nemesis = {
reason = nemesis_house_feud
copy_reason = rival
target = scope:house_feud_rival
}
}
else_if = {
limit = {
NOT = { has_relation_rival = scope:house_feud_rival }
}
set_relation_rival = {
target = scope:house_feud_rival
reason = rival_house_feud_start_of_feud
}
}
# Stress
stress_and_fulfillment_impact = { vengeful = minor_stress_impact_loss }
house_feud_forgiving_stress_effect = yes
}
# Save reasons for reference
scope:relation ?= {
# Save Feud attacker
set_variable = { name = house_feud_attacker value = scope:house_feud_attacker }
# Save Feud victim
set_variable = { name = house_feud_victim value = scope:house_feud_victim }
set_variable = { name = house_feud_house_1 value = scope:house_feud_attacker.house }
set_variable = { name = house_feud_house_2 value = scope:house_feud_victim.house }
# Save Feud starters
set_variable = { name = house_feud_house_1_first_head value = scope:starter_house_head }
set_variable = { name = house_feud_house_2_first_head value = scope:house_feud_rival }
set_variable = { name = house_feud_house_1_score value = 0 }
set_variable = { name = house_feud_house_2_score value = 0 }
# Save start reason flavor
set_variable = { name = house_feud_reason value = flag:$REASON$ }
# Move starting score/save flavor if relevant
if = {
limit = { exists = var:house_feud_reason }
switch = {
trigger = var:house_feud_reason
flag:head_killed = {
change_variable = { name = house_feud_house_1_score add = house_feud_medium_counter_value }
}
flag:head_skull_sent = {
change_variable = { name = house_feud_house_1_score add = house_feud_medium_counter_value }
}
flag:family_killed = {
change_variable = { name = house_feud_house_1_score add = house_feud_medium_counter_value }
}
flag:head_cuckolded = {
change_variable = { name = house_feud_house_1_score add = house_feud_minor_counter_value }
}
flag:family_cuckolded = {
change_variable = { name = house_feud_house_1_score add = house_feud_minor_counter_value }
}
flag:competing_claim = {
set_variable = { name = house_feud_title value = scope:house_feud_claim }
}
flag:head_tortured = {
if = {
limit = {
scope:house_feud_victim = { has_character_flag = house_feud_blinding_flag }
}
set_variable = { name = house_feud_reason value = flag:head_blinded }As written in game/common/scripted_effects/03_bp1_scripted_effects.txt.
The first 120 of its 240 lines; the rest is in game/common/scripted_effects/03_bp1_scripted_effects.txt from line 6.
Where it is used
Every place in common/, events/ and history/ that calls house_feud_start_effect.
Character interactions (1)
- Impact House Relation
Events (19)
- … True …
bp1_house_feud.0006 - A … Enemy
bp1_house_feud.0004 - A … Honor
bp1_house_feud.0013 - A … Pride
bp1_house_feud.0014 - A Damnable House
bp1_house_feud.0001 - A Maltreated …
bp1_house_feud.0011
13 more
- A Vengeful …
bp1_house_feud.0009 - An Eye for an Eye
bp1_house_feud.0003 - Crowned Cuckquean
bp1_house_feud.0012 - Danger: No Vacancy
travel_danger_events.5010 - Dynastic Solidarity
bp1_house_feud.0002 - ep2_wedding.0957
- feast.7102
- Keep your friends close...
grand_ambitions.0190 - Lure of Vendetta
bp1_house_feud.0005 - Smouldering in Captivity
bp1_house_feud.0007 - Unexpected Guests
nomad_events.0240 - Unforgivable Treatment
bp1_house_feud.0010 - Unjust Imprisonment
bp1_house_feud.0008
Scripted effects inside an event file (1)
- mpo_nomad_events_1011_heir_resents_effect
Source: game/common/scripted_effects/03_bp1_scripted_effects.txt and every file of common/, events/ and history/ that calls it, Crusader Kings III 1.20.1.2.