Add more abilities in the sample

This commit is contained in:
Arnaud Jamin
2023-10-05 16:57:43 -04:00
parent e952256b98
commit 25f2e06400
83 changed files with 966 additions and 356 deletions
@@ -0,0 +1,29 @@
#include "CogSampleModifierCalculation_Cooldown.h"
#include "CogSampleGameplayAbility.h"
#include "CogSampleAttributeSet_Caster.h"
//--------------------------------------------------------------------------------------------------------------------------
UCogSampleModifierCalculation_Cooldown::UCogSampleModifierCalculation_Cooldown()
{
CooldownReductionDef.AttributeToCapture = UCogSampleAttributeSet_Caster::GetCooldownReductionAttribute();
CooldownReductionDef.AttributeSource = EGameplayEffectAttributeCaptureSource::Source;
CooldownReductionDef.bSnapshot = false;
RelevantAttributesToCapture.Add(CooldownReductionDef);
}
//--------------------------------------------------------------------------------------------------------------------------
float UCogSampleModifierCalculation_Cooldown::CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const
{
FAggregatorEvaluateParameters EvaluationParameters;
float CooldownReduction = 0.0f;
GetCapturedAttributeMagnitude(CooldownReductionDef, Spec, EvaluationParameters, CooldownReduction);
const UCogSampleGameplayAbility* Ability = Cast<UCogSampleGameplayAbility>(Spec.GetContext().GetAbilityInstance_NotReplicated());
const float UnmitigatedCooldown = (Ability != nullptr) ? Ability->GetUnmitigatedCooldownDuration() : 0.0f;
const float MitigatedCooldown = UnmitigatedCooldown * FMath::Max(0.0f, 1.0f - CooldownReduction);
return MitigatedCooldown;
}