I did it. Oh my !
If I understand well :
{
"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
"DebugName": "Mercy_strike_SE_ApplyOnEvent",
"ID": "dec282fb-96f1-45b7-8566-33d89ce5873f",
"Components": [{
"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
"StatusEffectType": "ApplyStatusEffectOnEvent",
"OverrideDescriptionString": 254,
"OverrideDescriptionStringTactical": -1,
"UseStatusEffectValueAs": "None",
"BaseValue": 0.2,
The 0.2 does not feel suspicious, but the ApplyStatusEffectOnEvent is.
Compare with Weightless draw and Galawain's Harry from Saint Omaku and Veilpiercer :
{
"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
"DebugName": "Weightless_draw_SE_ApplyOnEvent",
"ID": "01badb09-824d-4e49-b77a-f670eda74a50",
"Components": [{
"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
"StatusEffectType": "ApplyStatusEffectOnEventWithChance",
"OverrideDescriptionString": 278,
"OverrideDescriptionStringTactical": 745,
"UseStatusEffectValueAs": "None",
"BaseValue": 0.5,
{
"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
"DebugName": "Galawains_harry_SE_ApplyOnEvent",
"ID": "c1048185-e71d-46cf-8d19-a77a7ef2b6fe",
"Components": [{
"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
"StatusEffectType": "ApplyStatusEffectOnEventWithChance",
"OverrideDescriptionString": 249,
"OverrideDescriptionStringTactical": 746,
"UseStatusEffectValueAs": "None",
"BaseValue": 0.5,
In short, it is 100% chance on Crit.
EDIT : Then, if it doesn't work everytime, it might be because negating recovery might work weirdly with melee weapon (negating recovery before it has started might lead to mess, ranged weapons won't have this issue because of the projectile non-null travel time).