{

    // Unagi特殊攻击强化

    "AbilityName" : "Unagi_SpecialSkill",

    "AbilityStacking": "Unique",



    "DefaultModifier" : 

    {

        "OnAdded" :

        [

            //设置UI箭头指示位置

            {

                "$type": "MoleMole.SetUIArrowAction",

                "position": 40

            }

        ]

    },

    

    "AbilityMixins" :

    [

        {

            "$type": "MoleMole.ActionsOnPropertyChangeMixin",

            "PropertyActions":

            [

                {

                    "PropertyType": "CurSP",

                    "ReferMaxPropertyType": "MaxSP",

                    "IsUsePercentage": false,

                    "ValueRangeActions":

                    [

                        {

                            "Val": 40,

                            "LowToValueActions": 

                            [

                                {

                                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                                    "ParamType" : 3,

                                    "ParamName" : "Int_BranchIndex",

                                    "Target" : "Self",

                                    "IntVal" : 1

                                }

                            ]

                        },

                        {

                            "Val": 40,

                            "ValueToLowActions":

                            [

                                {

                                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                                    "ParamType" : 3,

                                    "ParamName" : "Int_BranchIndex",

                                    "Target" : "Self",

                                    "IntVal" : 0

                                }

                            ]

                        }

                    ]

                },

                {

                    "PropertyType": "Custom",

                    "CustomPropertyType": "MagicValueCounts",

                    "IsUsePercentage": false,

                    "ValueRangeActions":

                    [

                        //魔刃值等于3时，同步状态机参数

                        {

                            "Val": 3,

                            "LowToValueActions": 

                            [

                                {

                                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                                    "ParamType" : 2,

                                    "ParamName" : "Bool_MagicBladeNormal",

                                    "Target" : "Self",

                                    "BoolVal" : true

                                }

                            ]

                        },

                        {

                            "Val": 3,

                            "ValueToLowActions": 

                            [

                                {

                                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                                    "ParamType" : 2,

                                    "ParamName" : "Bool_MagicBladeNormal",

                                    "Target" : "Self",

                                    "BoolVal" : false

                                }

                            ]

                        }

                    ]   

                }

            ]

        },

        {

            "$type" : "MoleMole.AttachStateWithModifierMixin",

            "ConfigList":

            [

                {

                    "LayerIndex": 0,

                    "AnimatorStateName": "Attack_Branch_Start_01",

                    "MaxFrameCountLow": false,

                    "FrameCountLow": 0,

                    "MaxFrameCountHigh": true,

                    "FrameCountHigh": 0,

                    "IsLoop": false,

                    "ModifierNameList":

                    [

                        "HasExitTimeModifier_Controller",

                        "ChargeAttackModifer_01",

                    ]

                },

                {

                    "LayerIndex": 0,

                    "AnimatorStateName": "Attack_Branch_Start_02",

                    "MaxFrameCountLow": false,

                    "FrameCountLow": 0,

                    "MaxFrameCountHigh": true,

                    "FrameCountHigh": 0,

                    "IsLoop": false,

                    "ModifierNameList":

                    [

                        "HasExitTimeModifier_Controller",

                        "ChargeAttackModifer_01",

                    ]

                },

                {

                    "LayerIndex": 0,

                    "AnimatorStateName": "Attack_Branch_Start_03",

                    "MaxFrameCountLow": false,

                    "FrameCountLow": 0,

                    "MaxFrameCountHigh": true,

                    "FrameCountHigh": 0,

                    "IsLoop": false,

                    "ModifierNameList":

                    [

                        "HasExitTimeModifier_Controller",

                        "ChargeAttackModifer_02",

                    ]

                },

                {

                    "LayerIndex": 0,

                    "AnimatorStateName": "Attack_Branch_Start_04",

                    "MaxFrameCountLow": false,

                    "FrameCountLow": 0,

                    "MaxFrameCountHigh": true,

                    "FrameCountHigh": 0,

                    "IsLoop": false,

                    "ModifierNameList":

                    [

                        "HasExitTimeModifier_Controller",

                        "ChargeAttackModifer_02",

                    ]

                }

            ]

        }

    ],



    "OnAbilityStart":

    [

        //执行SP检测，能量不足时强制松手

        {

            "$type": "MoleMole.ApplyModifier",

            "ModifierName": "SpCheckModifier_Failed",

            "Predicates" :

            [

                {

                    "$type": "MoleMole.ByPlayerPropertyValue",

                    "Numerator": "CurSP",

                    //"CustomNumerator": "PerfectReady",

                    "Denominator": "MaxSP",

                    "IsUsePercent": false,

                    "CompareType": "Less",

                    "Val1" : 40,

                    //"Val2" : 300,

                    "Target" : "Self"

                },

            ]

        },

        //执行SP检测，能量足够时成功蓄力

        {

            "$type": "MoleMole.ApplyModifier",

            "ModifierName": "SpCheckModifier_Success",

            "Predicates" :

            [

                {

                    "$type": "MoleMole.ByPlayerPropertyValue",

                    "Numerator": "CurSP",

                    //"CustomNumerator": "PerfectReady",

                    "Denominator": "MaxSP",

                    "IsUsePercent": false,

                    "CompareType": "GreaterEqual",

                    "Val1" : 40,

                    //"Val2" : 300,

                    "Target" : "Self"

                }

            ]

        }

    ],



    "Modifiers" : 

    {

        //略作延迟后，执行蓄力判定（30帧）

        "ChargeAttackModifer_01":

        {

            "ModifierStacking": "Unique",

            "Duration": -1,



            "OnAdded" :

            [

                {

                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                    "ParamType" : 3,

                    "ParamName" : "Int_ChargeIndex",

                    "Target" : "Self",

                    "IntVal" : 0,

                },

            ],



            "DelayHandlers" :

            [

                {

                    "DelayTime" : 0.5,

                    "TimeUpActions":

                    [

                        {

                            "$type" : "MoleMole.TriggerAbilityAction",

                            "AbilityName" : "Unagi_SpecialSkill",

                            "Target" : "Self",

                        }

                    ]

                }

            ]

        },



        //略作延迟后，执行蓄力判定（15帧）

        "ChargeAttackModifer_02":

        {

            "ModifierStacking": "Unique",

            "Duration": -1,



            "OnAdded" :

            [

                {

                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                    "ParamType" : 3,

                    "ParamName" : "Int_ChargeIndex",

                    "Target" : "Self",

                    "IntVal" : 0,

                },

            ],



            "DelayHandlers" :

            [

                {

                    "DelayTime" : 0.25,

                    "TimeUpActions":

                    [

                        {

                            "$type" : "MoleMole.TriggerAbilityAction",

                            "AbilityName" : "Unagi_SpecialSkill",

                            "Target" : "Self",

                        }

                    ]

                }

            ]

        },



        //无能量，蓄力失败

        "SpCheckModifier_Failed":

        {

            "ModifierStacking": "MultipleRefresh",

            "Duration": 0.1,



            "OnAdded" :

            [

                {

                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                    "ParamType" : 2,

                    "ParamName" : "Bool_HoldAttackB",

                    "Target" : "Self",

                    "BoolVal" : false

                }

            ],

        },



        //有能量，蓄力成功

        "SpCheckModifier_Success":

        {

            "ModifierStacking": "MultipleRefresh",

            "Duration": 0.1,



            "OnAdded" :

            [

                //蓄力成功状态机参数

                {

                    "$type" : "MoleMole.SetAnimCtrlerParamAction",

                    "ParamType" : 3,

                    "ParamName" : "Int_ChargeIndex",

                    "Target" : "Self",

                    "IntVal" : 1,

                },

                //隐藏小幽灵

                {

                    "$type" : "MoleMole.TriggerAbilityAction",

                    "AbilityName" : "Unagi_Follower_ShowandHidewithState",

                    "Target" : "Self",

                },

                //蓄力成功特效

                {

                    "$type": "MoleMole.FireEffect",

                    "EffectPattern": "Eff_Unagi_Attack_Branch_01_Charge",

                    "Target": "Self",

                    "FireEffectPosRot" : 

                    {

                        "CoordsOption" : "ReferTarget",

                        "TargetOption" : 

                        {

                            "$type" : "MoleMole.ConfigPosRotReferTarget",

                            "OffsetReferTarget" : "Self",

                            "AttachPoint" : "WeaponPoint_01",

                            "IsUseAttachPointPos" : true,

                            "IsUseAttachPointRotation" : true,

                        },

                        "Offset" : 

                        {

                            "PositionOffset" : {"x":0.0, "y":0.0, "z":0.0},

                            "AngleOffset" : {"x":0.0, "y":0.0, "z":0.0},

                            "IsUseRotationY" : true,

                            "IsUseRotationXZ" : true,

                        }

                    },

                    "Predicates":  //正好在同一帧松手会有时序问题，打个补丁

                    [

                        {

                            "$type": "MoleMole.ByAnimCtrlerParam",

                            "ParamType": 2,

                            "ParamName": "Bool_HoldAttackB",

                            "CompareType": "Equal",

                            "BoolVal": true,

                        }

                    ]

                },

                //蓄力成功音效

                {

                    "$type" : "MoleMole.FireAudio",

                    "AudioPattern" : "Play_sfx_char_unagi_attack_branch_03_2",

                    "Predicates":  //正好在同一帧松手会有时序问题，打个补丁

                    [

                        {

                            "$type": "MoleMole.ByAnimCtrlerParam",

                            "ParamType": 2,

                            "ParamName": "Bool_HoldAttackB",

                            "CompareType": "Equal",

                            "BoolVal": true,

                        }

                    ]

                },

                //略作延迟，强制触发攻击

                {

                    "$type" : "MoleMole.ApplyModifier",

                    "ModifierName" : "HasExitTimeModifier_Trigger",

                    "Target" : "Self"

                }

            ]

        },



        //略作延迟，强制触发攻击（管理）

        "HasExitTimeModifier_Controller":

        {

            "ModifierStacking": "Unique",

            "Duration": -1,



            "OnRemoved" :

            [

                {

                    "$type" : "MoleMole.RemoveModifier",

                    "ModifierName" : "HasExitTimeModifier_Trigger",

                    "Target" : "Self"

                },

            ]

        },



        //略作延迟，强制触发攻击（效果）

        "HasExitTimeModifier_Trigger":

        {

            "ModifierStacking": "Unique",

            "Duration": -1,



            "DelayHandlers" :

            [

                {

                    "DelayTime" : 0.25,

                    "TimeUpActions":

                    [

                        {

                            "$type" : "MoleMole.SetAnimCtrlerParamAction",

                            "ParamType" : 2,

                            "ParamName" : "Bool_HoldAttackB",

                            "Target" : "Self",

                            "BoolVal" : false

                        }

                    ]

                }

            ]

        }

    }

}