Interaction · Friendly actions
Ward's Martial Drill
Pass a Commander Trait on to your Ward
What you need
You
To send it
- Is an Adult
- Number of commander traits at least 1
Also needed: not imprisoned · available (not imprisoned, not incapable)
To see it in the menu
- If played by the AI: Relation (at least 1):
The character you target
To send it
- Is at least 10 years old
- Number of commander traits at most 1
Also needed: available (not imprisoned, not incapable)
To see it in the menu
- Is played by the AI
- Is a child
One of these
- You: Has the target as ward
or
is_hostage_of = scope:actor
Ward's Martial Drill is a friendly character interaction in Crusader Kings III. You need: Is an Adult, Number of commander traits at least 1, Is not imprisoned and 1 more. The character you target needs: Is at least 10 years old, Number of commander traits at most 1 and Is available (not imprisoned, not incapable). The AI weighs it (the answer is partly random). Reasons the AI weighs include You have Groomed to Rule (+20), Personal Champion (+10), The recipient has compatible Childhood Trait (+15) and 2 more. It needs Khans of the Steppe. Patch 1.20.1.2, from game/common/character_interactions/09_mpo_interactions.txt.
Quick answers (2)
- What are the requirements for Ward's Martial Drill in CK3?
- You: Is an Adult, Number of commander traits at least 1, Is not imprisoned and Is available (not imprisoned, not incapable). The character you target: Is at least 10 years old, Number of commander traits at most 1 and Is available (not imprisoned, not incapable). (patch 1.20.1.2)
- How do I get the AI to accept Ward's Martial Drill?
- The AI weighs it (the answer is partly random). Its reasons: … Opinion of …, You have Groomed to Rule +20, We have Traits in common, We have opposite Traits, Has Martial Skill, Has Prowess Skill, Personal Champion +10, The recipient has compatible Childhood Trait +15, The recipient has incompatible Childhood Trait -15, Intimidated by you, Terrified of you and The recipient already has Commander Traits -50.
Will they accept?
The AI adds these up and accepts above zero; near zero the answer is partly random (ai_maybe). Reasons in italics are the script's, with no label in the game.
| Reason | Amount |
|---|---|
| Base | 0 |
| … Opinion of … | varies |
You have Groomed to Rulewhen
| +20 |
We have Traits in commonwhen
| varies |
We have opposite Traitswhen
| varies |
| Has Martial Skill | your martial × 0.5 |
| Has Prowess Skill | your prowess × 0.5 |
| Personal Champion | +10 |
| The recipient has compatible Childhood Trait | +15 |
| The recipient has incompatible Childhood Trait | -15 |
Intimidated by youwhen
| intimidated_halved_reason_value |
Terrified of youwhen
| cowed_halved_reason_value |
The recipient already has Commander Traitswhen
| -50 |
Acceptance (ai_accept) (319 lines of game script)
base = 0
opinion_modifier = {
who = scope:recipient
opinion_target = scope:actor
multiplier = 0.5
desc = AI_OPINION_REASON
}
modifier = {
desc = influence_children_groomed_to_rule_perk_tt
trigger = {
scope:actor = {
has_perk = groomed_to_rule_perk
}
}
add = groomed_to_rule_value
}
modifier = {
add = {
value = 5
if = {
limit = {
number_of_personality_traits_in_common = {
target = scope:recipient
value = 2
}
}
multiply = 2
}
else_if = {
limit = {
number_of_personality_traits_in_common = {
target = scope:recipient
value = 3
}
}
multiply = 3
}
}
number_of_personality_traits_in_common = {
target = scope:recipient
value >= 1
}
desc = we_are_alike_tt
}
modifier = {
add = {
value = -5
if = {
limit = {
scope:recipient = {
number_of_opposing_personality_traits = {
target = scope:actor
value = 2
}
}
}
multiply = 2
}
else_if = {
limit = {
scope:recipient = {
number_of_opposing_personality_traits = {
target = scope:actor
value = 3
}
}
}
multiply = 3
}
}
scope:recipient = {
number_of_opposing_personality_traits = {
target = scope:actor
value >= 1
}
}
desc = we_are_NOT_alike_tt
}
modifier = {
add = {
value = scope:actor.martial
multiply = 0.5
}
desc = HAS_MARTIAL_SKILL_REASON
}
modifier = {
add = {
value = scope:actor.prowess
multiply = 0.5
}
desc = HAS_PROWESS_SKILL_REASON
}
modifier = {
exists = scope:actor.court_position:champion_court_position
add = 10
desc = HAS_CHAMPION_REASON
}
modifier = {
add = 15
switch = {
trigger = yes
scope:logistician = {
scope:recipient = {
OR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:military_engineer = {
scope:recipient = {
OR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:aggressive_attacker = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:unyielding_defender = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:forder = {
scope:recipient = {
OR = {
has_trait = rowdy
has_trait = curious
}
}
}
scope:flexible_leader = {
scope:recipient = {
OR = {
has_trait = charming
has_trait = curious
}
}
}
scope:desert_warrior = {
scope:recipient = {
has_trait = rowdy
}
}
scope:jungle_stalker = {
scope:recipient = {
has_trait = rowdy
}
}
scope:reaver = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:reckless = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:holy_warrior = {
scope:recipient = {
has_trait = pensive
}
}
scope:open_terrain_expert = {
scope:recipient = {
has_trait = rowdy
}
}
scope:rough_terrain_expert = {
scope:recipient = {
has_trait = rowdy
}
}
scope:forest_fighter = {
scope:recipient = {
has_trait = rowdy
}
}
scope:cautious_leader = {
scope:recipient = {
has_trait = pensive
}
}
scope:organizer = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = charming
}
}
}
scope:winter_soldier = {
scope:recipient = {
has_trait = rowdy
}
}
}
desc = has_compatible_personality_tt
}
modifier = {
add = -15
switch = {
trigger = yes
scope:logistician = {
scope:recipient = {
NOR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:military_engineer = {
scope:recipient = {
NOR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:aggressive_attacker = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:unyielding_defender = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:forder = {
scope:recipient = {
NOR = {
has_trait = rowdy
has_trait = curious
}
}
}
scope:flexible_leader = {
scope:recipient = {
NOR = {
has_trait = charming
has_trait = curious
}
}
}
scope:desert_warrior = {
scope:recipient = {
NOT = {
has_trait = rowdy
}
}
}
scope:jungle_stalker = {
scope:recipient = {
NOT = {
has_trait = rowdy
}
}
}
scope:reaver = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:reckless = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:holy_warrior = {
scope:recipient = {
NOT = {
has_trait = pensive
}
}
}
scope:open_terrain_expert = {
scope:recipient = {
NOT = {
has_trait = rowdy
}
}
}
scope:rough_terrain_expert = {
scope:recipient = {
NOT = {
has_trait = rowdy
}
# … (cut here; the rest is in the file)As written in game/common/character_interactions/09_mpo_interactions.txt.
What happens
If they accept
- Event mpo_interactions_events.0101
- Gains 20 Stress
- Opinion: Pleased (+20)
- The character you target:
- Opinion: Admiration (+20)
If they refuse
- Event mpo_interactions_events.0102
- Gains 40 Stress
- Opinion: Disappointed (-20)
- The character you target: Opinion: Confused (-20)
Options when sending
- Logistician
- Military Engineer
- Aggressive Attacker
- Defender
- Forder
- Flexible Leader
- Desert Warrior
- Jungle Stalker
- Pillager
- Reckless
- Faithful Blade
- Open Terrain Expert
- Rough Terrain Expert
- Forest Fighter
- Cautious Leader
- Organizer
- Winter Soldier
Events it fires: mpo_interactions_events.0101, mpo_interactions_events.0102
• the game's own tooltip text · ◦ our reading of the script line · code the script where neither exists
Who can use it and sees it (is_available, is_shown) (20 lines of game script)
is_available = trigger_if = {
limit = {
is_ai = yes
}
any_relation = {
type = ward
count >= 1
}
}
is_shown = has_mpo_dlc_trigger = yes
scope:recipient = {
is_ai = yes
is_adult = no
OR = {
scope:actor = {
has_relation_ward = scope:recipient
}
is_hostage_of = scope:actor
}
}As written in game/common/character_interactions/09_mpo_interactions.txt.
Can be sent when (is_valid…) (144 lines of game script)
scope:recipient = {
age >= 10
number_of_commander_traits <= 1
trigger_if = {
limit = {
scope:actor = {
number_of_commander_traits > 0
}
}
custom_description = {
text = influence_child_commander_interaction_all_same_traits
switch = {
trigger = yes
scope:logistician = {
scope:recipient = {
NOT = {
has_trait = logistician
}
}
}
scope:military_engineer = {
scope:recipient = {
NOT = {
has_trait = military_engineer
}
}
}
scope:aggressive_attacker = {
scope:recipient = {
NOT = {
has_trait = aggressive_attacker
}
}
}
scope:unyielding_defender = {
scope:recipient = {
NOT = {
has_trait = unyielding_defender
}
}
}
scope:forder = {
scope:recipient = {
NOT = {
has_trait = forder
}
}
}
scope:flexible_leader = {
scope:recipient = {
NOT = {
has_trait = flexible_leader
}
}
}
scope:desert_warrior = {
scope:recipient = {
NOT = {
has_trait = desert_warrior
}
}
}
scope:jungle_stalker = {
scope:recipient = {
NOT = {
has_trait = jungle_stalker
}
}
}
scope:reaver = {
scope:recipient = {
NOT = {
has_trait = reaver
}
}
}
scope:reckless = {
scope:recipient = {
NOT = {
has_trait = reckless
}
}
}
scope:holy_warrior = {
scope:recipient = {
NOT = {
has_trait = holy_warrior
}
}
}
scope:open_terrain_expert = {
scope:recipient = {
NOT = {
has_trait = open_terrain_expert
}
}
}
scope:rough_terrain_expert = {
scope:recipient = {
NOT = {
has_trait = rough_terrain_expert
}
}
}
scope:forest_fighter = {
scope:recipient = {
NOT = {
has_trait = forest_fighter
}
}
}
scope:cautious_leader = {
scope:recipient = {
NOT = {
has_trait = cautious_leader
}
}
}
scope:organizer = {
scope:recipient = {
NOT = {
has_trait = organizer
}
}
}
scope:winter_soldier = {
scope:recipient = {
NOT = {
has_trait = winter_soldier
}
}
}
}
}
}
is_physically_able = yes
}
scope:actor = {
is_adult = yes
number_of_commander_traits >= 1
is_imprisoned = no
is_physically_able = yes
}
As written in game/common/character_interactions/09_mpo_interactions.txt.
Effects (on_send, on_accept, on_decline) (232 lines of game script)
on_send = switch = {
trigger = yes
scope:logistician = {
trait:logistician = {
save_scope_as = target_trait
}
}
scope:military_engineer = {
trait:military_engineer = {
save_scope_as = target_trait
}
}
scope:aggressive_attacker = {
trait:aggressive_attacker = {
save_scope_as = target_trait
}
}
scope:unyielding_defender = {
trait:unyielding_defender = {
save_scope_as = target_trait
}
}
scope:forder = {
trait:forder = {
save_scope_as = target_trait
}
}
scope:flexible_leader = {
trait:flexible_leader = {
save_scope_as = target_trait
}
}
scope:desert_warrior = {
trait:desert_warrior = {
save_scope_as = target_trait
}
}
scope:jungle_stalker = {
trait:jungle_stalker = {
save_scope_as = target_trait
}
}
scope:reaver = {
trait:reaver = {
save_scope_as = target_trait
}
}
scope:reckless = {
trait:reckless = {
save_scope_as = target_trait
}
}
scope:holy_warrior = {
trait:holy_warrior = {
save_scope_as = target_trait
}
}
scope:open_terrain_expert = {
trait:open_terrain_expert = {
save_scope_as = target_trait
}
}
scope:rough_terrain_expert = {
trait:rough_terrain_expert = {
save_scope_as = target_trait
}
}
scope:forest_fighter = {
trait:forest_fighter = {
save_scope_as = target_trait
}
}
scope:cautious_leader = {
trait:cautious_leader = {
save_scope_as = target_trait
}
}
scope:organizer = {
trait:organizer = {
save_scope_as = target_trait
}
}
scope:winter_soldier = {
trait:winter_soldier = {
save_scope_as = target_trait
}
}
fallback = {
scope:actor = {
random_character_trait = {
limit = {
has_trait_category = commander
}
save_scope_as = target_trait
}
}
}
}
on_accept = scope:actor = {
trigger_event = mpo_interactions_events.0101
show_as_tooltip = {
add_stress = minor_stress_gain
add_opinion = {
target = scope:recipient
modifier = pleased_opinion
opinion = 20
}
}
}
scope:recipient = {
show_as_tooltip = {
switch = {
trigger = yes
scope:logistician = {
trait:logistician = {
save_scope_as = target_trait
}
}
scope:military_engineer = {
trait:military_engineer = {
save_scope_as = target_trait
}
}
scope:aggressive_attacker = {
trait:aggressive_attacker = {
save_scope_as = target_trait
}
}
scope:unyielding_defender = {
trait:unyielding_defender = {
save_scope_as = target_trait
}
}
scope:forder = {
trait:forder = {
save_scope_as = target_trait
}
}
scope:flexible_leader = {
trait:flexible_leader = {
save_scope_as = target_trait
}
}
scope:desert_warrior = {
trait:desert_warrior = {
save_scope_as = target_trait
}
}
scope:jungle_stalker = {
trait:jungle_stalker = {
save_scope_as = target_trait
}
}
scope:reaver = {
trait:reaver = {
save_scope_as = target_trait
}
}
scope:reckless = {
trait:reckless = {
save_scope_as = target_trait
}
}
scope:holy_warrior = {
trait:holy_warrior = {
save_scope_as = target_trait
}
}
scope:open_terrain_expert = {
trait:open_terrain_expert = {
save_scope_as = target_trait
}
}
scope:rough_terrain_expert = {
trait:rough_terrain_expert = {
save_scope_as = target_trait
}
}
scope:forest_fighter = {
trait:forest_fighter = {
save_scope_as = target_trait
}
}
scope:cautious_leader = {
trait:cautious_leader = {
save_scope_as = target_trait
}
}
scope:organizer = {
trait:organizer = {
save_scope_as = target_trait
}
}
scope:winter_soldier = {
trait:winter_soldier = {
save_scope_as = target_trait
}
}
}
if = {
limit = {
exists = scope:target_trait
}
add_trait = scope:target_trait
}
add_opinion = {
target = scope:actor
modifier = admiration_opinion
opinion = 20
}
}
}
on_decline = scope:actor = {
trigger_event = mpo_interactions_events.0102
show_as_tooltip = {
add_stress = medium_stress_gain
add_opinion = {
target = scope:recipient
modifier = disappointed_opinion
opinion = -20
}
}
}
scope:recipient = {
show_as_tooltip = {
add_opinion = {
target = scope:actor
modifier = confused_opinion
opinion = -20
}
}
}As written in game/common/character_interactions/09_mpo_interactions.txt.
- Category
- Friendly actions
- Again on the same character
- after 3 years
- DLC
- Khans of the Steppe
- In the menu
- main list
- ID
influence_child_commander_interaction
Source: game/common/character_interactions/09_mpo_interactions.txt and the English localisation, Crusader Kings III 1.20.1.2. “You” is the character who sends it (scope:actor, or a puppet acting for you); “the character you target” is the recipient.