96{
97 Super::PostGameplayEffectExecute(Data);
98
99 constexpr float MinimumHealth = 0.0f;
100
101 if (Data.EvaluatedData.Attribute == GetHealthAttribute())
102 {
103 LOG_INFO(LogCKAttribute,
"Direct Health Access : %f", GetHealth());
104 SetHealth(FMath::Clamp(GetHealth(), MinimumHealth, GetMaxHealth()));
105 }
106 else if (Data.EvaluatedData.Attribute == GetDamageAttribute())
107 {
108 float LocalDamage = GetDamage();
109 bool bCriticalHit = GetDamageIsCritical() > 0.0f;
110
111 SetHealth(FMath::Clamp(GetHealth() - LocalDamage, MinimumHealth, GetMaxHealth()));
112
113 if (LocalDamage > 0.0f)
114 {
117 }
118
119 SetDamage(0.0f);
120 SetDamageIsCritical(0.0f);
121 }
122
124 {
126 Data.Target.AddLooseGameplayTag(TAG_CHARACTER_STATE_ISDEAD);
128 }
129}
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:38
FOnDamageTakenDelegate OnDamageDelegate
Definition BaseAttributeSet.h:91
FDamageResultData GenerateDamageResultData(const struct FGameplayEffectModCallbackData &Data, float LocalDamage, bool bCriticalHit) const
Definition BaseAttributeSet.cpp:58
FDeathDelegate OnDeathDelegate
Definition BaseAttributeSet.h:90