34{
35 if (!
CheckCost(Handle, ActorInfo,
nullptr))
36 {
37 EndAbility(Handle, ActorInfo, ActivationInfo,
true,
true);
38 return;
39 }
40
41 ACK_CharacterPlayer* TargetCharacter = Cast<ACK_CharacterPlayer>(ActorInfo->AvatarActor.Get());
42 if (!TargetCharacter)
43 {
44 EndAbility(Handle, ActorInfo, ActivationInfo,
false,
true);
45 return;
46 }
47
48 UAbilitySystemComponent* ASC = GetAbilitySystemComponentFromActorInfo();
49 if (!ASC)
50 {
51 EndAbility(Handle, ActorInfo, ActivationInfo,
false,
true);
52 return;
53 }
54
57 {
58 EndAbility(Handle, ActorInfo, ActivationInfo,
true,
true);
59 return;
60 }
63
66
67 if (CurrentComboCount == 0 || bIsLastCombo)
68 {
70 }
71
72 ApplyCost(Handle, ActorInfo, ActivationInfo);
73
74 if (bIsLastCombo)
75 {
76
78 }
79 else
80 {
82 {
83 FGameplayEffectSpecHandle SpecHandle = MakeOutgoingGameplayEffectSpec(
ComboWindowEffectClass, GetAbilityLevel());
84 if (SpecHandle.IsValid())
85 {
86 (void)ApplyGameplayEffectSpecToOwner(Handle, ActorInfo, ActivationInfo, SpecHandle);
87 }
88 }
89 }
90
91 if (MontageToPlay)
92 {
94
96
97 UAbilityTask_PlayMontageAndWait* PlayMontageTask = UAbilityTask_PlayMontageAndWait::CreatePlayMontageAndWaitProxy(this, TEXT("SkillMontage"), MontageToPlay, 1.0f);
98
99 PlayMontageTask->OnCompleted.AddDynamic(this, &ThisClass::OnCompleteCallback);
100 PlayMontageTask->OnInterrupted.AddDynamic(this, &ThisClass::OnInterruptedCallback);
101 PlayMontageTask->ReadyForActivation();
102 }
103 else
104 {
105 EndAbility(Handle, ActorInfo, ActivationInfo,
true,
false);
106 }
107}
Definition CK_CharacterPlayer.h:20
void RotateCharacterToCursor()
Definition GA_Base.cpp:58
FORCEINLINE void SetHitStopEnabled(bool bEnable)
Definition GA_CombatBase.h:60
TObjectPtr< UCombatDataBase > CombatData
Definition GA_CombatBase.h:68
void SetupHitCheckListeners()
Definition GA_CombatBase.cpp:64
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
Definition GA_CombatBase.cpp:44
virtual void ApplyCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
Definition GA_SkillBase.cpp:124
virtual void ApplyCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
Definition GA_SkillBase.cpp:160
virtual bool CheckCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, FGameplayTagContainer *OptionalRelevantTags) const override
Definition GA_SkillBase.cpp:87
TArray< TObjectPtr< UAnimMontage > > ComboActionMontages
Definition GA_Skill_Q.h:28
TSubclassOf< UGameplayEffect > ComboWindowEffectClass
Definition GA_Skill_Q.h:31