Why are the numbers behind murder schemes so misleading

  • We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

forfor

Major
54 Badges
Dec 6, 2016
504
555
  • Divine Wind
  • Sword of the Stars
  • Victoria: Revolutions
  • Europa Universalis IV: Res Publica
  • Heir to the Throne
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Art of War
  • Europa Universalis IV: Third Rome
  • Europa Universalis III: Chronicles
  • Europa Universalis III
  • Stellaris: Synthetic Dawn
  • Victoria 2: A House Divided
  • Victoria 2: Heart of Darkness
  • Stellaris: Humanoids Species Pack
  • Europa Universalis IV: Cradle of Civilization
  • Stellaris: Digital Anniversary Edition
  • Europa Universalis IV: Mandate of Heaven
  • Stellaris - Path to Destruction bundle
  • Crusader Kings II: Monks and Mystics
  • Stellaris: Leviathans Story Pack
  • Europa Universalis IV: Cossacks
  • Stellaris: Apocalypse
  • Europa Universalis IV: Rule Britannia
  • Stellaris: Distant Stars
  • Europa Universalis IV: Dharma
  • Stellaris: Megacorp
  • Crusader Kings II: Holy Fury
  • Prison Architect
  • Stellaris: Lithoids
  • Stellaris: Federations
  • Crusader Kings III
  • Europa Universalis IV: Rights of Man
  • Stellaris: Necroids
  • Europa Universalis IV
  • Victoria 2
  • Europa Universalis IV: El Dorado
  • Mount & Blade: Warband
  • Crusader Kings II: Way of Life
  • Europa Universalis IV: Common Sense
  • Crusader Kings II: Horse Lords
  • Stellaris: Nemesis
  • Crusader Kings II: Conclave
  • Europa Universalis 4: Emperor
  • Stellaris
  • Crusader Kings II: Reapers Due
  • Tyranny: Archon Edition
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: The Old Gods
First of all, my schemes get detected a lot more than 5% of the time when I have 95% secrecy. I would say that there's about 50-50 odds of getting caught. At the same time, when they go through, they seem to also only succeed about 2/3 or maybe only half of the time even with 95% success chance. What gives? Is there something I'm missing? should I be worried about building up scheme power beyond 95%?
 
Last edited:
  • 6Like
  • 2
Reactions:
Your sample size isnt large enough
Confirmation bias
Their spy master is really good
In my most recent example, I recruited their spymaster to my scheme. First my scheme got found out despite 95% secrecy, and no spymaster to discover it. Despite that I still had 95% success chance, so I let the scheme continue, at which point the scheme failed because the target beat my assassin to death with a book. Luckily it went through on the second try, but still.
 
  • 4Like
Reactions:
should I be worried about building up scheme power beyond 95%?
95% is the maximum you can get for both success and secrecy
 
  • 2
  • 2
Reactions:
secrecy is the chance you got discovered when you choose "do it" in the final step,
monthly the plan has a chance to be detected by the target (or spymaster if there is one) base on his intrigue

I dont remember a book in the outcome, so I dont know it is a result of failed or saved, but the success rate do not count the chance of being saved,
the chance variates as some saver are specific for a murder method, but if the target has all those protection,
I will say the actual success rate is desperation (just the dynasty perk only can make it 200/900 = below 30%)
 
Last edited:
  • 8
  • 8
  • 5Like
Reactions:
secrecy is the chance you got discovered when you choose "do it" in the final step,
monthly the plan has a chance to be detected by the target (or spymaster if there is one) base on his intrigue

I didn't know that and I'm not a new player. It should be explained more clearly in game.
 
  • 14
Reactions:
I'm noticing this as well. I'm not normally the sneaky type, but every so often I inherit into someone who already has 10 intrigue perks.

I've noticed a high rate of failure and discovery despite having 95% on both stats, but just figured I was getting unlucky and didn't worry too much about it.
 
I think the 5% to 95% roll is done for every single phase of the Murder event.

For example if there are 4 ticks before completion, the die will be rolled 4 times. Assuming a 95% rate of success each roll, we get a .95^4 = 81% chance to succeed on all 4 rolls. So with 19% chance the murder does not succeed. Same analysis can be done with the inclusion of secrecy too, giving us 4 potential results.

This is just my understanding of the odds though, I may be wrong.
 
So, to sum it up, nobody really knows how the thing is calculated. We are all best guessing it. Perhaps someone from the devs should clarify this.
 
  • 10
Reactions:
I think the 5% to 95% roll is done for every single phase of the Murder event.

For example if there are 4 ticks before completion, the die will be rolled 4 times. Assuming a 95% rate of success each roll, we get a .95^4 = 81% chance to succeed on all 4 rolls. So with 19% chance the murder does not succeed. Same analysis can be done with the inclusion of secrecy too, giving us 4 potential results.

This is just my understanding of the odds though, I may be wrong.
That might be true for the secrecy, but there is a pseudo-hidden stat that determines scheme time. You can have 95% success but still add conspirators to speed up the plot.
 
For my conclusion, please refer to my previous post, below is the game file I traced for who would like to proof read
I first study these for the Achievement The Things Love Does for Us, then when I using hook/kidnap for inspiration, but for this thread, I will use murder as example.

For every scheme, there is a file correspond to it, for murder it is game\common\schemes\murder_scheme.txt, in it there is a
Code:
    on_monthly = {
        hostile_scheme_discovery_chance_effect = yes
        if = {
            limit = {
                NOT = { exists = scope:discovery_event_happening }
            }            
            scheme_owner = {
                trigger_event = {
                    on_action = murder_ongoing
                }
            }
        }
    }
murder_ongoing is those event give bonus on the scheme, skip it for this time.
hostile_scheme_discovery_chance_effect is in game\common\scripted_effects\00_general_scheme_effects.txt

Code:
    else_if = {
        limit = {
            #Does the target have a Spymaster?
            exists = scope:target.host.cp:councillor_spymaster
        }
        #Save spymaster scope for later reference
        scope:target.host.cp:councillor_spymaster = {
            save_scope_as = spymaster
        }

        if = {
            limit = {
                is_scheme_exposed = no
                #Spymaster won't expose their own Scheme
                NOT = { scope:owner = scope:spymaster }
                #Spymaster won't expose *your* (liege's) Scheme
                NOT = { scope:owner = scope:spymaster.liege }
            }
            random = {
                chance = scope:spymaster.spymaster_scheme_discovery_chance

                save_temporary_scope_value_as = {
                    name = discover_scheme
                    value = yes
                }
            }
        }
in which it checks if the target is in your court or not, your spymaster wont expose your plan, so he has to depends on himself,
there is another random determine it is the agent or you being discovered, but let's assume there is a spymaster, and check the
chance spymaster_scheme_discovery_chance first, it is in game\common\script_values\99_spymaster_values.txt
Code:
spymaster_scheme_discovery_base_chance = {
    value = 1
    add = {
        add = intrigue
        divide = 3
    }
}

spymaster_scheme_discovery_chance = {
    add = spymaster_scheme_discovery_base_chance
    if = { # Percentage bonus applied to the base chance
        limit = {
            is_performing_council_task = task_disrupt_schemes
        }
        add = {
            value = spymaster_scheme_discovery_base_chance
            multiply = {            
                value = spymaster_disrupt_schemes_total_modifier
                divide = 100
            }
        }
    }
    multiply = 0.5
}
the value is the (intrigue/3 + 1)/2, and + some bonus if the council task is disrupt schemes, but none of this is includes the value of success rate nor secrecy.
if got discovered, then it fires hostile_scheme_discovery.1001, which is the event that the spymaster report to his leige, and that chains into
hostile_scheme_discovery.3001, which informs you your plan is being discovered.


return to the scheme file, there is a on_ready block
Code:
    on_ready = {
        scheme_owner = {
            if = {
                limit = {
                    has_character_flag = is_in_event_murder_outcome_0001
                }
                trigger_event = {
                    id = murder_outcome.0001
                    days = 1
                }
            }
            else = {
                trigger_event = murder_outcome.0001
            }
        }
    }
let me skip a number of steps from murder_outcome.0001, as the game use multiple steps just to ensure 2 murders wont happen on the same day,
then choose a set of murder method base on target's condition (common\on_action\schemes\murder_on_actions) and random pick one.
assume it use assassin, it is event murder_outcome.1001 (events\scheme_events\murder_scheme\murder_outcome_events.txt) ,
first it will calcuate the chance of discovery by just sample 100-secrecy (common\scripted_effects\00_murder_scheme-effects.txt)
Code:
    immediate = {
        murder_outcome_roll_setup_effect = yes
    }

    option = {
        name = murder_outcome.1001.a
        murder_outcome_roll_effect = yes
        stress_impact = {
            arbitrary = minor_stress_impact_loss
            compassionate = medium_stress_impact_gain
            gregarious = minor_stress_impact_gain
        }
    }

Code:
#Sets up the Outcome Roll values
murder_outcome_roll_setup_effect = {
    #Discovery Roll setup
    save_scope_value_as = {
        name = discovery_chance
        value = {
            value = 100
            subtract = scope:scheme.scheme_secrecy
        }
    }
}
then if you choose to do it, it goes to murder_outcome_roll_effect (common\scripted_effects\00_murder_scheme_effects.txt)
it rolls for the success rate and discover rate
Code:
    #SUCCESS ROLL
    random = {
        chance = scope:scheme.scheme_success_chance
        custom_tooltip = murder_successful_roll_tt
        save_scope_value_as = {
            name = scheme_successful
            value = yes
        }
    }
    ### End Success roll
    #DISCOVERY ROLL
    custom_description_no_bullet = {
        text = in_addition_effect_tooltip
    }
    random = {
        chance = scope:discovery_chance
        custom_tooltip = scheme_remain_secret_roll_tt
        save_scope_value_as = {
            name = scheme_discovered
            value = yes
        }
        if = {
            limit = {
                exists = scope:target.host
            }
            scope:target.host = {
                save_scope_as = murder_exposer
            }
        }
        else = {
            scope:target = {
                save_scope_as = murder_exposer
            }
        }
    }
    ### End Discovery roll
but even if the success roll success , it still have the murder save
Code:
        if = {
            limit = {
                exists = scope:scheme_successful
            }
            trigger_event = {
                on_action = murder_save_roll
                days = 3
            }
        }
in which only the first one is success, others are being saved by someone

Code:
murder_save_roll = {
    random_events = {
        200 = murder_save.9999 #Murder succeeds

        #Lover saves you from an assassin
        50 = murder_save.0001
        
        #Lover saves you from a creepy crawly
        100 = murder_save.0002
        
        #Mindbreak character saves you from an assassin
        100 = murder_save.0003

        #Warhorse saves you from a band of thugs
        100 = murder_save.0004

        #Your Prison Pet saves you in prison
        100 = murder_save.0005

        #Their personal guard protects them from a band of thugs
        100 = murder_save.0006

        #Your cat saves you!
        100 = murder_save.0007

        #Your dog saves you!
        100 = murder_save.0008

        # Dynasty Perk: Family Connections
        700 = murder_save.0009

        # A Varangian saves them
        300 = murder_save.0010

        # Saved from poisoned food by cat
        50 = murder_save.0011

        # Saved from poisoned food by dog
        50 = murder_save.0012

        # Saved from poisoned food by gluttonous trait
        500 = murder_save.0013

        # Saved from assassin by language skills
        100 = murder_save.0014

        #Saved by timely artifact
        100 = murder_save.0015

        # Saved from poisoned food by food taster
        100 = court_position.9001

        # Saved from poison by cup-bearer
        50 = court_position.9011

        # A Bodyguard saves you from an assassin
        100 = court_position.9021

        # A Shieldmaiden saves them
        600 = fp1_shieldmaiden.0021

    }
}
most only works for a specific type, for example lover for assassin and creepy crawly is 2 cases already, cup-bearer only works for poisoned drinks.
but some like the Dynasty Perk: Family Connections can work for any.
 
  • 10
  • 1Like
Reactions:
In ck2 there was a random event where someone involved in a plot could blab about the plot when drunk revealing it, and making you be careful about not inviting everyone, ck3 has a similar thing with the hunter and his map
 
# Saved from assassin by language skills
100 = murder_save.0014
that sounds interesting, does this mean that if you speak more languages it may can help you to survive a assassin attack?
 
  • 1Like
Reactions:
that sounds interesting, does this mean that if you speak more languages it may can help you to survive a assassin attack?
well, the condition is the murder aren't the same culture of you, but you learnt his language,
the event says you hear the assassin discussing about the murder plan in their language, thought you can't understand.
 
  • 5
Reactions:
I had a similar experience to OP, to the extent I thought it was a bug:

Murder scheme failed three times in a row, all attempts with 95% chance of success and 95% secrecy (all three times I had the targets spymaster as an agent). Third fail ended with me being publically labelled a murderer ("attempted-murderer" surely?)

At the very least the actual probabilities should be clearly explained or broken down in the tooltip, as it is it's just too misleading.
 
Looks like somebody posted the real explanation but that is way too much info for me to take in. I just tell myself that it's being calculated monthly (so 95% chance to stay secret every month). I'm just used to saving gold and bribing agents even after discovery to force through important murder plots. The 95% number is really more like 50/50 so no idea why the game gives it in the first place.
 
Looks like somebody posted the real explanation but that is way too much info for me to take in. I just tell myself that it's being calculated monthly (so 95% chance to stay secret every month). I'm just used to saving gold and bribing agents even after discovery to force through important murder plots. The 95% number is really more like 50/50 so no idea why the game gives it in the first place.
Secrecy has ZERO impact on anything but the detection chance of the scheme when it is executed at its conclusion. If you even attempt to access the secrecy value in scripting code before the end of the scheme you'll get a error message about it in the debug log.

Reference #1
Reference #2
 
  • 2
  • 2
Reactions:
For my conclusion, please refer to my previous post, below is the game file I traced for who would like to proof read
I first study these for the Achievement The Things Love Does for Us, then when I using hook/kidnap for inspiration, but for this thread, I will use murder as example.

For every scheme, there is a file correspond to it, for murder it is game\common\schemes\murder_scheme.txt, in it there is a
Code:
    on_monthly = {
        hostile_scheme_discovery_chance_effect = yes
        if = {
            limit = {
                NOT = { exists = scope:discovery_event_happening }
            }           
            scheme_owner = {
                trigger_event = {
                    on_action = murder_ongoing
                }
            }
        }
    }
murder_ongoing is those event give bonus on the scheme, skip it for this time.
hostile_scheme_discovery_chance_effect is in game\common\scripted_effects\00_general_scheme_effects.txt

Code:
    else_if = {
        limit = {
            #Does the target have a Spymaster?
            exists = scope:target.host.cp:councillor_spymaster
        }
        #Save spymaster scope for later reference
        scope:target.host.cp:councillor_spymaster = {
            save_scope_as = spymaster
        }

        if = {
            limit = {
                is_scheme_exposed = no
                #Spymaster won't expose their own Scheme
                NOT = { scope:owner = scope:spymaster }
                #Spymaster won't expose *your* (liege's) Scheme
                NOT = { scope:owner = scope:spymaster.liege }
            }
            random = {
                chance = scope:spymaster.spymaster_scheme_discovery_chance

                save_temporary_scope_value_as = {
                    name = discover_scheme
                    value = yes
                }
            }
        }
in which it checks if the target is in your court or not, your spymaster wont expose your plan, so he has to depends on himself,
there is another random determine it is the agent or you being discovered, but let's assume there is a spymaster, and check the
chance spymaster_scheme_discovery_chance first, it is in game\common\script_values\99_spymaster_values.txt
Code:
spymaster_scheme_discovery_base_chance = {
    value = 1
    add = {
        add = intrigue
        divide = 3
    }
}

spymaster_scheme_discovery_chance = {
    add = spymaster_scheme_discovery_base_chance
    if = { # Percentage bonus applied to the base chance
        limit = {
            is_performing_council_task = task_disrupt_schemes
        }
        add = {
            value = spymaster_scheme_discovery_base_chance
            multiply = {           
                value = spymaster_disrupt_schemes_total_modifier
                divide = 100
            }
        }
    }
    multiply = 0.5
}
the value is the (intrigue/3 + 1)/2, and + some bonus if the council task is disrupt schemes, but none of this is includes the value of success rate nor secrecy.
if got discovered, then it fires hostile_scheme_discovery.1001, which is the event that the spymaster report to his leige, and that chains into
hostile_scheme_discovery.3001, which informs you your plan is being discovered.


return to the scheme file, there is a on_ready block
Code:
    on_ready = {
        scheme_owner = {
            if = {
                limit = {
                    has_character_flag = is_in_event_murder_outcome_0001
                }
                trigger_event = {
                    id = murder_outcome.0001
                    days = 1
                }
            }
            else = {
                trigger_event = murder_outcome.0001
            }
        }
    }
let me skip a number of steps from murder_outcome.0001, as the game use multiple steps just to ensure 2 murders wont happen on the same day,
then choose a set of murder method base on target's condition (common\on_action\schemes\murder_on_actions) and random pick one.
assume it use assassin, it is event murder_outcome.1001 (events\scheme_events\murder_scheme\murder_outcome_events.txt) ,
first it will calcuate the chance of discovery by just sample 100-secrecy (common\scripted_effects\00_murder_scheme-effects.txt)
Code:
    immediate = {
        murder_outcome_roll_setup_effect = yes
    }

    option = {
        name = murder_outcome.1001.a
        murder_outcome_roll_effect = yes
        stress_impact = {
            arbitrary = minor_stress_impact_loss
            compassionate = medium_stress_impact_gain
            gregarious = minor_stress_impact_gain
        }
    }

Code:
#Sets up the Outcome Roll values
murder_outcome_roll_setup_effect = {
    #Discovery Roll setup
    save_scope_value_as = {
        name = discovery_chance
        value = {
            value = 100
            subtract = scope:scheme.scheme_secrecy
        }
    }
}
then if you choose to do it, it goes to murder_outcome_roll_effect (common\scripted_effects\00_murder_scheme_effects.txt)
it rolls for the success rate and discover rate
Code:
    #SUCCESS ROLL
    random = {
        chance = scope:scheme.scheme_success_chance
        custom_tooltip = murder_successful_roll_tt
        save_scope_value_as = {
            name = scheme_successful
            value = yes
        }
    }
    ### End Success roll
    #DISCOVERY ROLL
    custom_description_no_bullet = {
        text = in_addition_effect_tooltip
    }
    random = {
        chance = scope:discovery_chance
        custom_tooltip = scheme_remain_secret_roll_tt
        save_scope_value_as = {
            name = scheme_discovered
            value = yes
        }
        if = {
            limit = {
                exists = scope:target.host
            }
            scope:target.host = {
                save_scope_as = murder_exposer
            }
        }
        else = {
            scope:target = {
                save_scope_as = murder_exposer
            }
        }
    }
    ### End Discovery roll
but even if the success roll success , it still have the murder save
Code:
        if = {
            limit = {
                exists = scope:scheme_successful
            }
            trigger_event = {
                on_action = murder_save_roll
                days = 3
            }
        }
in which only the first one is success, others are being saved by someone

Code:
murder_save_roll = {
    random_events = {
        200 = murder_save.9999 #Murder succeeds

        #Lover saves you from an assassin
        50 = murder_save.0001
       
        #Lover saves you from a creepy crawly
        100 = murder_save.0002
       
        #Mindbreak character saves you from an assassin
        100 = murder_save.0003

        #Warhorse saves you from a band of thugs
        100 = murder_save.0004

        #Your Prison Pet saves you in prison
        100 = murder_save.0005

        #Their personal guard protects them from a band of thugs
        100 = murder_save.0006

        #Your cat saves you!
        100 = murder_save.0007

        #Your dog saves you!
        100 = murder_save.0008

        # Dynasty Perk: Family Connections
        700 = murder_save.0009

        # A Varangian saves them
        300 = murder_save.0010

        # Saved from poisoned food by cat
        50 = murder_save.0011

        # Saved from poisoned food by dog
        50 = murder_save.0012

        # Saved from poisoned food by gluttonous trait
        500 = murder_save.0013

        # Saved from assassin by language skills
        100 = murder_save.0014

        #Saved by timely artifact
        100 = murder_save.0015

        # Saved from poisoned food by food taster
        100 = court_position.9001

        # Saved from poison by cup-bearer
        50 = court_position.9011

        # A Bodyguard saves you from an assassin
        100 = court_position.9021

        # A Shieldmaiden saves them
        600 = fp1_shieldmaiden.0021

    }
}
most only works for a specific type, for example lover for assassin and creepy crawly is 2 cases already, cup-bearer only works for poisoned drinks.
but some like the Dynasty Perk: Family Connections can work for any.
So basically the monthly check has nothing to do with Scheme secrecy but only to do with it:
Their Spymasters Intruige
Whether they are on disrupt schemes
- Spymasters don't out own scheme, and don't out bosses

Chance seems to be a percentage (or 0-100 weight).
So:

random = {
chance = scope:spymaster.spymaster_scheme_discovery_chance

Where spymaster_scheme_discovery_chance is (Intrigue/3 +1)*(Disrupt Schemes bonus or 1)/2
Per month.

So an intrigue 9 spymaster has a monthly discovery chance of (9/3+1)*(1)/2 or 2%. Per month.
Say the scheme runs for 16 months (1-.02)^16 the chance of being undetected is er... 72% I think.

So a pretty bad spymaster will catch schemes occasionally regardless of secrecy. And disrupt schemes doesn't do very much maybe?
Only changing it from 2% to 2.2% (roughly) if he was on disrupt schemes with 9 intrigue it would be er... 70% chance to remain undetected.

Where as a 20 skill spymaster would fail to detect a scheme over 16 months 53% of the time, or 47% if he was on disrupt schemes.
 
  • 2Like
  • 1
Reactions: