{ "AbilityMixins": [ { "$type": "AttachStateWithModifierMixin", "ConfigList": [ { "AnimatorStateName": "Attack_Card_S_01_Start", "FrameCountHigh": 0, "FrameCountLow": 0, "IsLoop": false, "LayerIndex": 0, "MaxFrameCountHigh": true, "MaxFrameCountLow": false, "ModifierNameList": [ "CalculateModifier" ] }, { "AnimatorStateName": "Attack_Card_S_01_Loop", "FrameCountHigh": 0, "FrameCountLow": 0, "IsLoop": true, "LayerIndex": 0, "MaxFrameCountHigh": true, "MaxFrameCountLow": false, "ModifierNameList": [ "CalculateModifier" ] }, { "AnimatorStateName": "Attack_Card_S_01_End", "FrameCountHigh": 5, "FrameCountLow": 0, "IsLoop": false, "LayerIndex": 0, "MaxFrameCountHigh": false, "MaxFrameCountLow": false, "ModifierNameList": [ "CalculateModifier" ] }, { "AnimatorStateName": "Attack_Branch_02_Singing_Attack_Hold", "FrameCountHigh": 0, "FrameCountLow": 0, "IsLoop": false, "LayerIndex": 0, "MaxFrameCountHigh": true, "MaxFrameCountLow": false, "ModifierNameList": [ "RemoveChargeTimes" ] } ] }, { "$type": "ActwithStateFrameMixin", "ConfigList": [ { "ActionList": [ { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "specials(AS_AddedDamageRatio)*property(ChargeTimesFollow)", "ParamName": "AS_AddedDamageRatio_Final_Local", "Target": "Self", "ValueType": "Float" } ], "AnimatorStateName": "Attack_Card_S_01_Start", "ForceTriggerOnTransitionIn": true, "ForceTriggerOnTransitionOut": false, "Frame": 0, "IsLoop": false, "LayerIndex": 0 }, { "ActionList": [ { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "specials(AS_AddedDamageRatio)*property(ChargeTimesFollow)", "ParamName": "AS_AddedDamageRatio_Final_Local", "Target": "Self", "ValueType": "Float" } ], "AnimatorStateName": "Attack_Branch_02_Singing_Attack_Hold", "ForceTriggerOnTransitionIn": true, "ForceTriggerOnTransitionOut": false, "Frame": 0, "IsLoop": false, "LayerIndex": 0 } ] }, { "$type": "ActionsOnPropertyChangeMixin", "DoInitialCheck": false, "PropertyActions": [ { "InstantPropertyChangeActions": [ { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "specials(SP_Delta_Pool)+(-1*specials(SP_Delta_Cache))", "ParamName": "SP_Delta_Pool", "Predicates": [ { "$type": "ByAbilitySpecial", "CompareType": "Less", "Param": 0, "ParamName": "SP_Delta_Cache", "ParamType": "Float" } ], "Target": "Self", "ValueType": "Float" }, { "$type": "BranchOperator", "Conditions": [ { "$type": "ByAbilitySpecial", "CompareType": "GreaterEqual", "Param": 25, "ParamName": "SP_Delta_Pool", "ParamType": "Float", "Target": "Caster" } ], "SuccessActions": [ { "$type": "ModifyProperty", "Amount": 1, "CustomPropertyType": "ChargeTimesFollow", "IsUsePercentage": false, "Percentage": 0, "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "Less", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 3 } ], "PropertyModifyFunction": "Add", "PropertyType": "Custom", "Target": "Caster" }, { "$type": "ModifyProperty", "Amount": 1, "CustomPropertyType": "ChargeTimesFollow", "IsUsePercentage": false, "Percentage": 0, "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "Less", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 3 }, { "$type": "ByAbilitySpecial", "CompareType": "GreaterEqual", "Param": 50, "ParamName": "SP_Delta_Pool", "ParamType": "Float", "Target": "Caster" } ], "PropertyModifyFunction": "Add", "PropertyType": "Custom", "Target": "Caster" }, { "$type": "ModifyProperty", "Amount": 1, "CustomPropertyType": "ChargeTimesFollow", "IsUsePercentage": false, "Percentage": 0, "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "Less", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 3 }, { "$type": "ByAbilitySpecial", "CompareType": "GreaterEqual", "Param": 75, "ParamName": "SP_Delta_Pool", "ParamType": "Float", "Target": "Caster" } ], "PropertyModifyFunction": "Add", "PropertyType": "Custom", "Target": "Caster" }, { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "specials(AS_AddedDamageRatio)*property(ChargeTimesFollow)", "ParamName": "AS_AddedDamageRatio_Final", "Target": "Self", "ValueType": "Float" }, { "$type": "SetAbilitySpecialAction", "DoRefresh": true, "ModifyFunction": "Mod", "Param": "%AS_DecreaseSP", "ParamName": "SP_Delta_Pool", "ParamType": "Float", "Target": "Self" }, { "$type": "SetAnimCtrlerParamAction", "BoolVal": true, "ParamName": "Bool_Card_FullCharge", "ParamType": 2, "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "GreaterEqual", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 3 } ], "Target": "Self" } ] } ], "IsSaveToSpecial": true, "IsUsePercentage": false, "NameSaveToSpecial": "SP_Delta_Cache", "PropertyType": "CurSP" } ] }, { "$type": "ActionsOnPropertyChangeMixin", "PropertyActions": [ { "IsUsePercentage": false, "PropertyType": "CurSP", "ReferMaxPropertyType": "MaxSP", "ValueRangeActions": [ { "LowToValueActions": [ { "$type": "SetAbilitySpecialAction", "DoRefresh": true, "ModifyFunction": "Replace", "Param": 1, "ParamName": "AS_ShouldBuffDamage", "ParamType": "Integer", "Target": "Self" } ], "Val": 25 } ] } ] } ], "AbilityName": "Astra_Card_ChargeTimes", "AbilitySpecials": { "AS_AddedDamageRatio": { "Value": 0, "ValueType": "Float" }, "AS_AddedDamageRatio_Final": { "Value": 0, "ValueType": "Float" }, "AS_AddedDamageRatio_Final_Local": { "Value": 0, "ValueType": "Float" }, "AS_DecreaseSP": { "Value": 25, "ValueType": "Float" }, "AS_RecoverSP_PerStack": { "Value": 0, "ValueType": "Float" }, "AS_ShouldBuffDamage": { "Value": 0, "ValueType": "Float" }, "SP_Delta_Cache": { "Value": 0, "ValueType": "Float" }, "SP_Delta_Pool": { "Value": 0, "ValueType": "Float" } }, "AbilityStacking": "Unique", "DefaultModifier": { "OnCustomEventReceived": [ { "$type": "BranchOperator", "Conditions": [ { "$type": "ByPlayerPropertyValue", "CompareType": "GreaterEqual", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 1 } ], "Predicates": [ { "$type": "ByCustomEvent", "EventKey": "Astra_Card_S_01_DecreaseCharge" } ], "SuccessActions": [ { "$type": "ModifyProperty", "Amount": -1, "CustomPropertyType": "ChargeTimesFollow", "IsUsePercentage": false, "Percentage": 0, "PropertyModifyFunction": "Add", "PropertyType": "Custom", "Target": "Caster" }, { "$type": "RecoverSPAction", "Amount": "%AS_RecoverSP_PerStack", "Target": "Caster" } ] }, { "$type": "SetAnimCtrlerParamAction", "BoolVal": false, "ParamName": "Bool_Card_FullCharge", "ParamType": 2, "Predicates": [ { "$type": "ByCustomEvent", "EventKey": "Astra_Card_S_01_DecreaseCharge" }, { "$type": "ByPlayerPropertyValue", "CompareType": "Less", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 3 } ], "Target": "Self" }, { "$type": "SetAbilitySpecialAction", "DoRefresh": true, "ModifyFunction": "Replace", "Param": 0, "ParamName": "AS_ShouldBuffDamage", "ParamType": "Integer", "Predicates": [ { "$type": "ByCustomEvent", "EventKey": "Astra_Card_S_02_NotEnoughSP" } ], "Target": "Self" } ], "OnHitOther": [ { "$type": "ModifyAttackDataAction", "Predicates": [ { "$type": "ByOr", "Predicates": [ { "$type": "ByAnimTagList", "TagList": [ "AttackSpecial", "ThunderAttack" ], "Target": "Self" }, { "$type": "ByAnimEventIDs", "AnimEventIDs": [ "Astra_Attack_Branch_SingAttack_Combo_AttackProperty_01", "Astra_Attack_Branch_SingAttack_Combo_AttackProperty_02", "Astra_Attack_Branch_SingAttack_Perfect_AttackProperty_01", "Astra_Attack_Branch_SingAttack_Perfect_AttackProperty_02", "Astra_Attack_Branch_SingAttack_Single_AttackProperty_01" ] } ] }, { "$type": "ByAbilitySpecial", "CompareType": "Equal", "Param": 1, "ParamName": "AS_ShouldBuffDamage", "ParamType": "Integer", "Target": "Caster" } ], "PropertyKey": "Actor_AddedDamageRatio", "PropertyValue": "%AS_AddedDamageRatio_Final", "Target": "Self" }, { "$type": "ModifyAttackDataAction", "Predicates": [ { "$type": "ByAnimEventIDs", "AnimEventIDs": [ "Astra_Attack_Card_S_01_AttackProperty_01", "Astra_Attack_Card_S_01_AttackProperty_01_ExSP", "Astra_Attack_Card_S_01_AttackProperty_02", "Astra_Attack_Branch_SingAttack_Hold_AttackProperty_01" ] } ], "PropertyKey": "Actor_AddedDamageRatio", "PropertyValue": "%AS_AddedDamageRatio_Final_Local", "Target": "Self" } ], "OnRemoved": [ { "$type": "ModifyProperty", "Amount": 0, "CustomPropertyType": "ChargeTimesFollow", "IsUsePercentage": false, "Percentage": 0, "PropertyModifyFunction": "Replace", "PropertyType": "Custom", "Target": "Caster" }, { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "specials(AS_AddedDamageRatio)*property(ChargeTimesFollow)", "ParamName": "AS_AddedDamageRatio_Final", "Target": "Self", "ValueType": "Float" }, { "$type": "SetAnimCtrlerParamAction", "BoolVal": false, "ParamName": "Bool_Card_FullCharge", "ParamType": 2, "Target": "Self" } ], "OnSkillStart": [ { "$type": "SetAbilitySpecialAction", "DoRefresh": true, "ModifyFunction": "Replace", "Param": 0, "ParamName": "AS_ShouldBuffDamage", "ParamType": "Integer", "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "Less", "Denominator": "MaxSP", "IsUsePercent": false, "Numerator": "CurSP", "Target": "Caster", "Val1": 25 }, { "$type": "ByOr", "Predicates": [ { "$type": "ByFromSkillID", "SkillID": "Astra_ExSp" }, { "$type": "ByFromSkillID", "SkillID": "Astra_Sp" }, { "$type": "ByFromSkillID", "SkillID": "Astra_SingAttack" }, { "$type": "ByFromSkillID", "SkillID": "Astra_SingAttack_Hold" }, { "$type": "ByFromSkillID", "SkillID": "Astra_SingAttack_Perfect" } ] } ], "Target": "Self" } ] }, "Modifiers": { "CalculateModifier": { "Duration": -1, "ModifierStacking": "Unique", "OnRemoved": [ { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "specials(AS_AddedDamageRatio)*property(ChargeTimesFollow)", "ParamName": "AS_AddedDamageRatio_Final", "Target": "Self", "ValueType": "Float" } ] }, "DelayCalculateModifier": { "Duration": 1, "ModifierStacking": "Refresh", "OnRemoved": [ { "$type": "SetAbilitySpecialByExpression", "DoRefresh": true, "Expression": "specials(AS_AddedDamageRatio)*property(ChargeTimesFollow)", "ParamName": "AS_AddedDamageRatio_Final", "Target": "Self", "ValueType": "Float" } ] }, "RemoveChargeTimes": { "Duration": -1, "ModifierStacking": "Unique", "OnAdded": [ { "$type": "RecoverSPAction", "Amount": "%AS_RecoverSP_PerStack", "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "GreaterEqual", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 1 } ], "Target": "Caster" }, { "$type": "RecoverSPAction", "Amount": "%AS_RecoverSP_PerStack", "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "GreaterEqual", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 2 } ], "Target": "Caster" }, { "$type": "RecoverSPAction", "Amount": "%AS_RecoverSP_PerStack", "Predicates": [ { "$type": "ByPlayerPropertyValue", "CompareType": "GreaterEqual", "CustomDenominator": "ChargeTimesFollowMax", "CustomNumerator": "ChargeTimesFollow", "Denominator": "Custom", "IsUsePercent": false, "Numerator": "Custom", "Target": "Caster", "Val1": 3 } ], "Target": "Caster" } ], "OnRemoved": [ { "$type": "ModifyProperty", "Amount": 0, "CustomPropertyType": "ChargeTimesFollow", "IsUsePercentage": false, "Percentage": 0, "PropertyModifyFunction": "Replace", "PropertyType": "Custom", "Target": "Caster" }, { "$type": "SetAnimCtrlerParamAction", "BoolVal": false, "ParamName": "Bool_Card_FullCharge", "ParamType": 2, "Target": "Self" }, { "$type": "ApplyModifier", "ModifierName": "DelayCalculateModifier", "Target": "Self" } ] } } }