0. 개요

속성 데미지를 증가시키는 게임플레이 어빌리티 업그레이드 태그를 가지고 있으면 해당 스펠 데미지를 증가시키도록 데미지 계산 식을 수정한다.

 

1. 속성 추가 데미지

(1) Native 게임플레이 태그 생성

FGameplayTag Upgrades_Fire_Increase10PercentDamage;
FGameplayTag Upgrades_Arcane_Increase10PercentDamage;
FGameplayTag Upgrades_Lightning_Increase10PercentDamage;
	GameplayTags.Upgrades_Fire_Increase10PercentDamage = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Upgrades.Fire.Increase10PercentDamage"),
	FString("Increase Damage of Fire SpellDamage")
	);
	GameplayTags.Upgrades_Arcane_Increase10PercentDamage = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Upgrades.Arcane.Increase10PercentDamage"),
	FString("Increase Damage of Arcane SpellDamage")
	);
	GameplayTags.Upgrades_Lightning_Increase10PercentDamage = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Upgrades.Lightning.Increase10PercentDamage"),
	FString("Increase Damage of Lightning SpellDamage")
	);

 

 

 

(2) ExecCalc_Damage의 Execute_Implementation 수정

		// 속성 저항이 데미지를 퍼센트로 무시함
		DamageTypeValue *= (100.f - Resistance) / 100.f;
		Damage += DamageTypeValue;

		if (AAuraCharacter* AuraCharacter = Cast<AAuraCharacter>(SourceAvatar))
		{
			if (AAuraPlayerState* AuraPS = AuraCharacter->GetPlayerState<AAuraPlayerState>())
			{
				// 화염 데미지 증가
				if (AuraPS->HasUpgradeTag(Tags.Upgrades_Fire_Increase10PercentDamage))
				{
					int Stacks = AuraPS->GetUpgradeTagCount(Tags.Upgrades_Fire_Increase10PercentDamage);

					Damage += Damage * 0.1f * Stacks;
				}
				// 전기 데미지 증가
				if (AuraPS->HasUpgradeTag(Tags.Upgrades_Lightning_Increase10PercentDamage))
				{
					int Stacks = AuraPS->GetUpgradeTagCount(Tags.Upgrades_Lightning_Increase10PercentDamage);

					Damage += Damage * 0.1f * Stacks;
				}
				// 화염 데미지 증가
				if (AuraPS->HasUpgradeTag(Tags.Upgrades_Arcane_Increase10PercentDamage))
				{
					int Stacks = AuraPS->GetUpgradeTagCount(Tags.Upgrades_Arcane_Increase10PercentDamage);

					Damage += Damage * 0.1f * Stacks;
				}
			}
		}