{ "AbilityName": "SPBilly_Talent_03", "AbilitySpecials": { "AS_CriticalDamageDelta": { "Value": 0.1, "ValueType": "Float" }, "AS_CriticalDamageRatioBuffDuration": { "Value": 20, "ValueType": "Float" }, "AS_HPDelta_Temp": { "Value": 0, "ValueType": "Float" }, "AS_HPLoss_Accumulated": { "Value": 0, "ValueType": "Float" }, "AS_HPLoss_Threshold": { "Value": 0.1, "ValueType": "Float" }, "AS_LowHP_Threshold": { "Value": 0.4, "ValueType": "Float" }, "AS_MaxStack": { "Value": 3, "ValueType": "Integer" }, "AS_RecoverHP": { "Value": 0.1, "ValueType": "Float" }, "AS_RecoverHP_Interval": { "Value": 1, "ValueType": "Float" }, "Target_CurHP": { "Value": 0, "ValueType": "Float" }, "Temp_Final_RecoverHP": { "Value": 0, "ValueType": "Float" } }, "AbilityStacking": "Unique", "DefaultModifier": { "OnAdded": [ { "$type": "ApplyModifier", "ModifierName": "OffStageRecoveryModifier", "Target": "Self" } ], "OnSkillStart": [ { "$type": "ApplyModifier", "ModifierName": "CriticalDamageRatioDeltaModifier", "Predicates": [ { "$type": "ByFromSkillID", "SkillID": "SPBilly_Sp" }, { "$type": "ByInOutBattleStatus", "IsInBattle": true, "Target": "Self" } ], "Target": "Self" } ] }, "Modifiers": { "CriticalDamageRatioDeltaModifier": { "Duration": "%AS_CriticalDamageRatioBuffDuration", "MaxStackingNumber": "%AS_MaxStack", "ModifierStacking": "MultipleAllRefreshNotReplace", "Properties": { "Actor_CriticalDamageRatioDelta": "%AS_CriticalDamageDelta" } }, "OffStageRecoveryModifier": { "Duration": -1, "ModifierStacking": "Unique", "OnThinkInterval": [ { "$type": "BranchOperator", "Conditions": [ { "$type": "ByPlayerPropertyValue", "CompareType": "Less", "Denominator": "MaxHP", "IsUsePercent": true, "Numerator": "CurHP", "Target": "Self", "Val1": "%AS_LowHP_Threshold" } ], "SuccessActions": [ { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "property(CurHP)\/property(MaxHP)+specials(AS_RecoverHP)", "ParamName": "Target_CurHP", "Target": "Self", "ValueType": "Float" }, { "$type": "BranchOperator", "Conditions": [ { "$type": "ByAbilitySpecial", "CompareType": "GreaterEqual", "Param": "%AS_LowHP_Threshold", "ParamName": "Target_CurHP" } ], "FailureActions": [ { "$type": "RecoverHPAction", "Amount": 0, "IgnoreRatio": true, "Percentage": "%AS_RecoverHP", "Predicates": [ { "$type": "ByIsLocalAvatar", "IsLocalAvatar": false, "Target": "Self" } ], "Target": "Self" } ], "SuccessActions": [ { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "max(specials(AS_LowHP_Threshold)-property(CurHP)\/property(MaxHP), 0)", "ParamName": "Temp_Final_RecoverHP", "Target": "Self", "ValueType": "Float" }, { "$type": "RecoverHPAction", "Amount": 0, "IgnoreRatio": true, "Percentage": "%Temp_Final_RecoverHP", "Predicates": [ { "$type": "ByIsLocalAvatar", "IsLocalAvatar": false, "Target": "Self" } ], "Target": "Self" } ] } ] } ], "ThinkInterval": "%AS_RecoverHP_Interval" } } }