19 TObjectPtr<AActor> TargetActor =
nullptr;
22 TObjectPtr<AActor> SourceActor =
nullptr;
25 FVector HitLocation = FVector::ZeroVector;
28 FVector HitNormal = FVector::ZeroVector;
31 float DamageAmount = 0.0f;
34 bool bIsCritical = false;
37 FGameplayTag HitEffectTag;
40 FGameplayTag DamageTypeTag;
43 FGameplayEffectContextHandle EffectContextHandle;
65 virtual void PreAttributeChange(
const FGameplayAttribute& Attribute,
float& NewValue)
override;
66 virtual void PostGameplayEffectExecute(
const struct FGameplayEffectModCallbackData& Data)
override;
69 void InitBaseStats(
float InMaxHealth,
float InMoveSpeed,
float InAttack,
float InAttackSpeed,
float InKnockbackResistance = 0.0f,
float InCooldownMultiplier = 1.0f);
71 FDamageResultData GenerateDamageResultData(
const struct FGameplayEffectModCallbackData& Data,
float LocalDamage,
bool bCriticalHit)
const;
94 bool bOutOfHealth =
false;
97 UPROPERTY(BlueprintReadOnly, Category =
"Stat", meta = (AllowPrivateAccess =
true))
98 FGameplayAttributeData Health;
100 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
101 FGameplayAttributeData MaxHealth;
103 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
104 FGameplayAttributeData MoveSpeed;
106 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
107 FGameplayAttributeData Attack;
109 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
110 FGameplayAttributeData AttackSpeed;
113 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
114 FGameplayAttributeData KnockbackResistance;
118 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
119 FGameplayAttributeData CooldownMultiplier;
122 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (HideFromModifiers))
123 FGameplayAttributeData Damage;
126 UPROPERTY(BlueprintReadOnly, Category = "Damage", meta = (HideFromModifiers))
127 FGameplayAttributeData DamageIsCritical;