{

  "AbilityName": "Follower_Default_Ability",

  "AbilityStacking":"Unique",



  "DefaultModifier":

  {

    "OnSkillBtnIndexChange":

    [

      {

        "$type": "MoleMole.RemoveModifier",

        "ModifierName": "DefaultFollowTypeModifier",

        "Predicates" :

        [

          {

            "$type": "MoleMole.ByFollowerActive",

            "CompareType": "Equal",

            "IsActive": true,

            "Target" : "Caster"

          }

        ]

      },

      {

        "$type": "MoleMole.ApplyModifier",

        "ModifierName": "DefaultFollowTypeModifier",

        "Predicates" :

        [

          {

            "$type": "MoleMole.ByFollowerActive",

            "CompareType": "Equal",

            "IsActive": true,

            "Target" : "Caster"

          }

        ]

      },

      {

        "$type" : "MoleMole.ApplyModifier",

        "ModifierName" : "HideFollowerModifier_1",

        "Target" : "Self",

        "Predicates" :

        [

          {

            "$type": "MoleMole.ByFollowerActive",

            "CompareType": "Equal",

            "IsActive": true,

            "Target" : "Caster"

          }

        ]

      },

      {

        "$type" : "MoleMole.FireEffect",

        "EffectPattern" : "Eff_Follower_Trans_Start",

        "Target" : "Self",

        "Predicates" :

        [

          {

            "$type": "MoleMole.ByFollowerActive",

            "CompareType": "Equal",

            "IsActive": true,

            "Target" : "Caster"

          }

        ]

      }

    ]

  },



  "OnAbilityStart":

  [

    {

      "$type" : "MoleMole.ApplyModifier",

      "ModifierName" : "ProcessSkillBtnCtrlModifier"

    }

  ],



  "AbilityMixins":

  [

    // {

    //   "$type": "MoleMole.RandomSkillObserverMixin",



    //   "TimeUpActions": 

    //   [

    //     {

    //       "$type": "MoleMole.SetAnimCtrlerParamAction",

    //       "ParamType": 2,

    //       "ParamName": "Bool_IsAttack",

    //       "BoolVal": false

    //     },

    //     {

    //       "$type": "MoleMole.RemoveModifier",

    //       "ModifierName": "DefaultFollowTypeModifier"

    //     },

    //     {

    //       "$type": "MoleMole.ApplyModifier",

    //       "ModifierName": "DefaultFollowTypeModifier"

    //     },

    //     {

    //       "$type": "MoleMole.RemoveModifier",

    //       "ModifierName": "HideFollowerModifier_2"

    //     },

    //     {

    //       "$type" : "MoleMole.ApplyModifier",

    //       "ModifierName" : "HideFollowerModifier_2",

    //       "Target" : "Self"

    //     }

    //   ],



    //   "PointUseUpActions": 

    //   [

    //     {

    //       "$type": "MoleMole.SetAnimCtrlerParamAction",

    //       "ParamType": 2,

    //       "ParamName": "Bool_IsExhausted",

    //       "BoolVal": true

    //     }

    //   ]

    // }

  ],



  "Modifiers":

  {

    "DefaultFollowTypeModifier":

    {

      "ModifierStacking" : "Unique",

      "Duration" : -1,



      "OnAdded":

      [

        {

          "$type": "MoleMole.ModifyFollowerFollowTypeAction",

          "FollowType": "ModifyPosReferAvatar",

          "PosOffset":

          {

            "x": -0.7,

            "y": 2.3,

            "z": -0.6

          },

          "PosLerpRatio": 0.1,

          "Predicates":

          [

            {

              "$type": "MoleMole.BySkillBtnIndex",

              "Target": "Self",

              "SkillBtnIndex": 2

            }

          ]

        },

        {

          "$type": "MoleMole.ModifyFollowerFollowTypeAction",

          "FollowType": "ModifyPosReferAvatar",

          "PosOffset":

          {

            "x": 0.7,

            "y": 2.3,

            "z": -0.6

          },

          "PosLerpRatio": 0.1,

          "Predicates":

          [

            {

              "$type": "MoleMole.BySkillBtnIndex",

              "Target": "Self",

              "SkillBtnIndex": 3

            }

          ]

        }

      ]

    },



    "HideFollowerModifier_1" : 

    {

      "ModifierStacking" : "Unique",

      "Duration" : 2.5,

      "ThinkInterval" : 2,

      "OnThinkInterval" :  

      [

        {

          "$type" : "MoleMole.SetFollowerInvisibleAction",

          "IsInvisible" : true,

          "Predicates" :

          [

            {

              "$type": "MoleMole.ByFollowerActive",

              "CompareType": "Equal",

              "IsActive": true,

              "Target" : "Caster"

            }

          ]

        },



        {

          "$type" : "MoleMole.FireEffect",

          "EffectPattern" : "Eff_Follower_Trans_Start",

          "Target" : "Self",

          "Predicates" :

          [

            {

              "$type": "MoleMole.ByFollowerActive",

              "CompareType": "Equal",

              "IsActive": true,

              "Target" : "Caster"

            }

          ]

        }

      ]

    },



    "HideFollowerModifier_2" : 

    {

      "ModifierStacking" : "Unique",

      "OnAdded" :  

      [

        {

          "$type" : "MoleMole.SetFollowerInvisibleAction",

          "IsInvisible" : true,

          "Predicates" :

          [

            {

              "$type": "MoleMole.ByFollowerActive",

              "CompareType": "Equal",

              "IsActive": true,

              "Target" : "Caster"

            }

          ]

        },

        {

          "$type" : "MoleMole.FireEffect",

          "EffectPattern" : "Eff_Follower_Trans_Start",

          "Target" : "Self",

          "Predicates" :

          [

            {

              "$type": "MoleMole.ByFollowerActive",

              "CompareType": "Equal",

              "IsActive": true,

              "Target" : "Caster"

            }

          ]

        }

      ]

    },



    "ProcessSkillBtnCtrlModifier":

    {

      "ModifierStacking" : "Unique",

      "Duration": 0.03,

      "OnAdded" :

      [

        {

          "$type" : "MoleMole.ProcessSkillBtnControlAction",

          "BtnIndex": "%BtnIndex"

        }

      ],

      "OnRemoved" :

      [

        {

          "$type": "MoleMole.RemoveModifier",

          "ModifierName": "HideFollowerModifier_1"

        },

        {

          "$type" : "MoleMole.SetFollowerInvisibleAction",

          "IsInvisible" : false

        },

        {

          "$type" : "MoleMole.FireEffect",

          "EffectPattern" : "Eff_Follower_Trans_Start",

          "Target" : "Self"

        }

      ]

    }

  }

}