The exact revolt probability formula is unknown, but it probably looks something like this:
Code:
P = A * L * (S1 + S2 + S3...)
where...
P = probability of revolt per turn
A = faction leader authority
L = character loyalty (all character types have loyalty attribute, but only named characters and generals [captains] can revolt [iirc, captains can't revolt])
S = sum of all settings in descr_campaign_db.xml, these most likely have unknown weighting coefficients
If you set leader authority to 0, the product and resulting probability of revolt for all characters will be 0. This is why low leader authority is more impactful than any of the other terms in the equation (and why AI factions drop characters to revolt all the time in some mods... looking at you EBII). I have not tested these parameters, but these would be my guesses for what they do:
Code:
<end_turn_modifier float="0.0"/> <!--base chance per turn-->
<excommunicated_modifier float="0.0"/> <!--additional chance when faction is excommunicated-->
<new_leader_modifier float="0.0"/> <!--additional chance on the turn when a new leader comes to power-->
<max_effective_loyalty float="10.0"/> <!--highest loyalty attribute value factored into the revolt chance equation-->
<rebel_region_modifier float="0.0"/> <!--additional chance when in regions controlled by the slave_faction-->
<shadow_region_modifier float="0.0"/> <!--additional chance when in regions controlled by a shadowing faction-->
<rebel_border_modifier float="0.0"/> <!--additional chance when in a region bordering a slave_faction region-->
<shadow_border_modifier float="0.0"/> <!--additional chance when in a region bordering a shadowing faction region-->
<shadow_authority_modifier float="0.0"/> <!--additional chance based on shadowing faction leader's authority attribute-->
<shadow_authority_modifier_sett float="0.0"/> <!--???-->
<num_units_modifier float="0.0"/> <!--additional chance based on number of units in the army-->
<captain_modifier float="0.0"/> <!--additional chance for captains-->
<min_revolt_chance float="0.0"/> <!--minimum revolt chance-->
<max_revolt_chance float="0.0"/> <!--maximum revolt chance-->
<ai_revolt_modifier float="0.0"/> <!--probably a post calculation multiplier for the AI still within min/max-->
<revolt_additional_armies bool="false"/> <!--???-->
<revolt_crusading_armies bool="false"/> <!--whether or not crusading armies can revolt-->
One problem I see in your code is that you assigned max_revolt_chance the type 'float' but the value '100' which is an integer. The float value would be '100.0'. I'm not sure if that makes a difference though.
If you're going to be modding stuff for a new campaign anyway, I think this approach with the revolt params is the wrong one. For 'trimming' your family tree, there are some better approaches but they require advanced scripting to address the problem of how to murder your own characters. Here is one method using conventional scripting. It involves spawning a fleet, moving any character you want (of unknown name/label) onto the fleet, and then killing the fleet and hence is occupants.