Add PHY gameplay attributes
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Kismet/BlueprintFunctionLibrary.h"
|
||||
#include "AbilitySystem/Attributes/PHYAttributeSettings.h"
|
||||
#include "PHYAttributeCalculationLibrary.generated.h"
|
||||
|
||||
class UPHYCoreAttributeSet;
|
||||
|
||||
/**
|
||||
* @brief 基础属性输入快照,用于 C++、GE 和后续 MMC 共享公式。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct FPHYCoreAttributeSnapshot
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/** @brief 力量。 */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="PHY|Attributes|Core")
|
||||
float Strength = 0.0f;
|
||||
|
||||
/** @brief 灵巧。 */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="PHY|Attributes|Core")
|
||||
float Dexterity = 0.0f;
|
||||
|
||||
/** @brief 体魄。 */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="PHY|Attributes|Core")
|
||||
float Vitality = 0.0f;
|
||||
|
||||
/** @brief 智力。 */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="PHY|Attributes|Core")
|
||||
float Intelligence = 0.0f;
|
||||
|
||||
/** @brief 精神。 */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="PHY|Attributes|Core")
|
||||
float Spirit = 0.0f;
|
||||
|
||||
/** @brief 感知。 */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="PHY|Attributes|Core")
|
||||
float Perception = 0.0f;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 次级战斗属性计算结果。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct FPHYDerivedCombatAttributes
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/** @brief 推导后的生命上限。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float MaxHealth = 0.0f;
|
||||
|
||||
/** @brief 推导后的法力上限。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float MaxMana = 0.0f;
|
||||
|
||||
/** @brief 推导后的耐力上限。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float MaxStamina = 0.0f;
|
||||
|
||||
/** @brief 推导后的物理攻击强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float PhysicalAttackPower = 0.0f;
|
||||
|
||||
/** @brief 推导后的法术强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float SpellPower = 0.0f;
|
||||
|
||||
/** @brief 推导后的护甲。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float Armor = 0.0f;
|
||||
|
||||
/** @brief 推导后的魔法抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float MagicResistance = 0.0f;
|
||||
|
||||
/** @brief 推导后的命中率。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float Accuracy = 0.0f;
|
||||
|
||||
/** @brief 推导后的闪避率。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float Evasion = 0.0f;
|
||||
|
||||
/** @brief 推导后的暴击率。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float CriticalChance = 0.0f;
|
||||
|
||||
/** @brief 推导后的暴击伤害倍率。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float CriticalDamage = 0.0f;
|
||||
|
||||
/** @brief 推导后的攻击速度倍率。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float AttackSpeed = 0.0f;
|
||||
|
||||
/** @brief 推导后的冷却缩减比例。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float CooldownReduction = 0.0f;
|
||||
|
||||
/** @brief 推导后的格挡强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float BlockPower = 0.0f;
|
||||
|
||||
/** @brief 推导后的破防强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float GuardBreakPower = 0.0f;
|
||||
|
||||
/** @brief 推导后的韧性。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float Poise = 0.0f;
|
||||
|
||||
/** @brief 推导后的韧性伤害。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Combat")
|
||||
float PoiseDamage = 0.0f;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 元素属性计算结果。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct FPHYDerivedElementAttributes
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/** @brief 推导后的通用元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float DamageBonus = 0.0f;
|
||||
|
||||
/** @brief 推导后的通用元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float Resistance = 0.0f;
|
||||
|
||||
/** @brief 推导后的通用元素穿透。 */
|
||||
UPROPERTY(BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float Penetration = 0.0f;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 属性公式函数库,避免首期依赖复杂 MMC 资产。
|
||||
*/
|
||||
UCLASS()
|
||||
class PHY_API UPHYAttributeCalculationLibrary : public UBlueprintFunctionLibrary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/** @brief 从配置默认值创建基础属性快照。 */
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Attributes")
|
||||
static FPHYCoreAttributeSnapshot MakeCoreSnapshotFromDefaults();
|
||||
|
||||
/** @brief 从基础属性集创建基础属性快照。 */
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Attributes")
|
||||
static FPHYCoreAttributeSnapshot MakeCoreSnapshotFromAttributeSet(const UPHYCoreAttributeSet* CoreAttributes);
|
||||
|
||||
/** @brief 根据基础属性和配置公式计算次级战斗属性。 */
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Attributes")
|
||||
static FPHYDerivedCombatAttributes CalculateCombatAttributes(const FPHYCoreAttributeSnapshot& CoreAttributes);
|
||||
|
||||
/** @brief 根据基础属性和配置公式计算通用元素属性。 */
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Attributes")
|
||||
static FPHYDerivedElementAttributes CalculateElementAttributes(const FPHYCoreAttributeSnapshot& CoreAttributes);
|
||||
};
|
||||
12
Source/PHY/Public/AbilitySystem/Attributes/PHYAttributeSet.h
Normal file
12
Source/PHY/Public/AbilitySystem/Attributes/PHYAttributeSet.h
Normal file
@@ -0,0 +1,12 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "AttributeSet.h"
|
||||
|
||||
#define PHY_ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \
|
||||
GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \
|
||||
GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \
|
||||
GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \
|
||||
GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName)
|
||||
@@ -0,0 +1,301 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "UObject/Object.h"
|
||||
#include "PHYAttributeSettings.generated.h"
|
||||
|
||||
/**
|
||||
* @brief 基础属性初始值。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct FPHYCoreAttributeDefaults
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/** @brief 力量初始值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Core")
|
||||
float Strength = 10.0f;
|
||||
|
||||
/** @brief 灵巧初始值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Core")
|
||||
float Dexterity = 10.0f;
|
||||
|
||||
/** @brief 体魄初始值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Core")
|
||||
float Vitality = 10.0f;
|
||||
|
||||
/** @brief 智力初始值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Core")
|
||||
float Intelligence = 10.0f;
|
||||
|
||||
/** @brief 精神初始值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Core")
|
||||
float Spirit = 10.0f;
|
||||
|
||||
/** @brief 感知初始值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Core")
|
||||
float Perception = 10.0f;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 次级战斗属性公式系数。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct FPHYCombatAttributeFormula
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/** @brief 生命上限基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxHealthBase = 100.0f;
|
||||
|
||||
/** @brief 每点体魄提供的生命上限。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxHealthVitality = 18.0f;
|
||||
|
||||
/** @brief 每点力量提供的生命上限。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxHealthStrength = 3.0f;
|
||||
|
||||
/** @brief 法力上限基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxManaBase = 60.0f;
|
||||
|
||||
/** @brief 每点智力提供的法力上限。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxManaIntelligence = 12.0f;
|
||||
|
||||
/** @brief 每点精神提供的法力上限。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxManaSpirit = 6.0f;
|
||||
|
||||
/** @brief 耐力上限基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxStaminaBase = 80.0f;
|
||||
|
||||
/** @brief 每点体魄提供的耐力上限。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxStaminaVitality = 5.0f;
|
||||
|
||||
/** @brief 每点灵巧提供的耐力上限。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MaxStaminaDexterity = 4.0f;
|
||||
|
||||
/** @brief 力量对物理攻击的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PhysicalAttackPowerStrength = 2.0f;
|
||||
|
||||
/** @brief 灵巧对物理攻击的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PhysicalAttackPowerDexterity = 0.5f;
|
||||
|
||||
/** @brief 智力对法术强度的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float SpellPowerIntelligence = 2.0f;
|
||||
|
||||
/** @brief 精神对法术强度的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float SpellPowerSpirit = 0.4f;
|
||||
|
||||
/** @brief 体魄对护甲的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float ArmorVitality = 1.2f;
|
||||
|
||||
/** @brief 力量对护甲的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float ArmorStrength = 0.4f;
|
||||
|
||||
/** @brief 精神对魔法抗性的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MagicResistanceSpirit = 1.1f;
|
||||
|
||||
/** @brief 智力对魔法抗性的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float MagicResistanceIntelligence = 0.3f;
|
||||
|
||||
/** @brief 命中基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float AccuracyBase = 0.8f;
|
||||
|
||||
/** @brief 感知对命中的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float AccuracyPerception = 0.006f;
|
||||
|
||||
/** @brief 灵巧对命中的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float AccuracyDexterity = 0.002f;
|
||||
|
||||
/** @brief 闪避基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float EvasionBase = 0.03f;
|
||||
|
||||
/** @brief 灵巧对闪避的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float EvasionDexterity = 0.003f;
|
||||
|
||||
/** @brief 感知对闪避的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float EvasionPerception = 0.001f;
|
||||
|
||||
/** @brief 暴击率基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CriticalChanceBase = 0.05f;
|
||||
|
||||
/** @brief 灵巧对暴击率的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CriticalChanceDexterity = 0.002f;
|
||||
|
||||
/** @brief 感知对暴击率的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CriticalChancePerception = 0.0015f;
|
||||
|
||||
/** @brief 暴击伤害基础倍率。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CriticalDamageBase = 1.5f;
|
||||
|
||||
/** @brief 力量对暴击伤害的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CriticalDamageStrength = 0.004f;
|
||||
|
||||
/** @brief 感知对暴击伤害的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CriticalDamagePerception = 0.003f;
|
||||
|
||||
/** @brief 攻击速度基础倍率。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float AttackSpeedBase = 1.0f;
|
||||
|
||||
/** @brief 灵巧对攻击速度的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float AttackSpeedDexterity = 0.01f;
|
||||
|
||||
/** @brief 冷却缩减基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CooldownReductionBase = 0.0f;
|
||||
|
||||
/** @brief 智力对冷却缩减的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CooldownReductionIntelligence = 0.0015f;
|
||||
|
||||
/** @brief 精神对冷却缩减的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float CooldownReductionSpirit = 0.001f;
|
||||
|
||||
/** @brief 格挡强度基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float BlockPowerBase = 5.0f;
|
||||
|
||||
/** @brief 力量对格挡强度的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float BlockPowerStrength = 1.2f;
|
||||
|
||||
/** @brief 体魄对格挡强度的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float BlockPowerVitality = 0.6f;
|
||||
|
||||
/** @brief 破防强度基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float GuardBreakPowerBase = 5.0f;
|
||||
|
||||
/** @brief 力量对破防强度的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float GuardBreakPowerStrength = 1.1f;
|
||||
|
||||
/** @brief 感知对破防强度的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float GuardBreakPowerPerception = 0.4f;
|
||||
|
||||
/** @brief 韧性基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PoiseBase = 20.0f;
|
||||
|
||||
/** @brief 体魄对韧性的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PoiseVitality = 1.5f;
|
||||
|
||||
/** @brief 力量对韧性的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PoiseStrength = 0.5f;
|
||||
|
||||
/** @brief 韧性伤害基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PoiseDamageBase = 5.0f;
|
||||
|
||||
/** @brief 力量对韧性伤害的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PoiseDamageStrength = 0.8f;
|
||||
|
||||
/** @brief 灵巧对韧性伤害的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Formula")
|
||||
float PoiseDamageDexterity = 0.2f;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 元素属性公式系数。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct FPHYElementAttributeFormula
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/** @brief 元素伤害加成基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float DamageBonusBase = 0.0f;
|
||||
|
||||
/** @brief 智力对元素伤害加成的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float DamageBonusIntelligence = 0.0015f;
|
||||
|
||||
/** @brief 感知对元素伤害加成的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float DamageBonusPerception = 0.0005f;
|
||||
|
||||
/** @brief 元素抗性基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float ResistanceBase = 0.02f;
|
||||
|
||||
/** @brief 精神对元素抗性的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float ResistanceSpirit = 0.002f;
|
||||
|
||||
/** @brief 体魄对元素抗性的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float ResistanceVitality = 0.0005f;
|
||||
|
||||
/** @brief 通用元素穿透基础值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float PenetrationBase = 0.0f;
|
||||
|
||||
/** @brief 感知对通用元素穿透的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float PenetrationPerception = 0.001f;
|
||||
|
||||
/** @brief 智力对通用元素穿透的系数。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes|Element")
|
||||
float PenetrationIntelligence = 0.0005f;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 属性体系配置,首期放入 PHYCombat 以便和战斗公式一起维护。
|
||||
*/
|
||||
UCLASS(Config=PHYCombat, DefaultConfig)
|
||||
class PHY_API UPHYAttributeSettings : public UObject
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/** @brief 基础属性默认初始值。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes")
|
||||
FPHYCoreAttributeDefaults DefaultCoreAttributes;
|
||||
|
||||
/** @brief 次级战斗属性公式。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes")
|
||||
FPHYCombatAttributeFormula CombatFormula;
|
||||
|
||||
/** @brief 元素属性公式。 */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="PHY|Attributes")
|
||||
FPHYElementAttributeFormula ElementFormula;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "AbilitySystem/Attributes/PHYAttributeSet.h"
|
||||
#include "PHYCombatAttributeSet.generated.h"
|
||||
|
||||
class UPHYCoreAttributeSet;
|
||||
struct FGameplayEffectModCallbackData;
|
||||
|
||||
/**
|
||||
* @brief PHY 次级战斗属性集,由基础属性和装备、效果共同驱动。
|
||||
*/
|
||||
UCLASS(BlueprintType)
|
||||
class PHY_API UPHYCombatAttributeSet : public UAttributeSet
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/** @brief 构造战斗属性并按默认基础属性推导首期数值。 */
|
||||
UPHYCombatAttributeSet();
|
||||
|
||||
/** @brief 注册属性复制。 */
|
||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||
|
||||
/** @brief 属性变更前限制百分比和资源范围。 */
|
||||
virtual void PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue) override;
|
||||
|
||||
/** @brief GameplayEffect 执行后限制资源不超过上限。 */
|
||||
virtual void PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data) override;
|
||||
|
||||
/** @brief 属性变更后同步当前资源与上限。 */
|
||||
virtual void PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue) override;
|
||||
|
||||
/** @brief 当前生命。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Health, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData Health;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, Health);
|
||||
|
||||
/** @brief 生命上限。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_MaxHealth, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData MaxHealth;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, MaxHealth);
|
||||
|
||||
/** @brief 当前法力。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Mana, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData Mana;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, Mana);
|
||||
|
||||
/** @brief 法力上限。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_MaxMana, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData MaxMana;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, MaxMana);
|
||||
|
||||
/** @brief 当前耐力。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Stamina, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData Stamina;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, Stamina);
|
||||
|
||||
/** @brief 耐力上限。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_MaxStamina, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData MaxStamina;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, MaxStamina);
|
||||
|
||||
/** @brief 物理攻击强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_PhysicalAttackPower, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData PhysicalAttackPower;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, PhysicalAttackPower);
|
||||
|
||||
/** @brief 法术强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_SpellPower, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData SpellPower;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, SpellPower);
|
||||
|
||||
/** @brief 护甲。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Armor, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData Armor;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, Armor);
|
||||
|
||||
/** @brief 魔法抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_MagicResistance, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData MagicResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, MagicResistance);
|
||||
|
||||
/** @brief 命中率,通常作为 0 到 1 的比例使用。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Accuracy, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData Accuracy;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, Accuracy);
|
||||
|
||||
/** @brief 闪避率,通常作为 0 到 1 的比例使用。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Evasion, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData Evasion;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, Evasion);
|
||||
|
||||
/** @brief 暴击率,通常作为 0 到 1 的比例使用。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_CriticalChance, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData CriticalChance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, CriticalChance);
|
||||
|
||||
/** @brief 暴击伤害倍率,1.5 表示 150% 伤害。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_CriticalDamage, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData CriticalDamage;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, CriticalDamage);
|
||||
|
||||
/** @brief 攻击速度倍率。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_AttackSpeed, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData AttackSpeed;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, AttackSpeed);
|
||||
|
||||
/** @brief 冷却缩减比例。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_CooldownReduction, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData CooldownReduction;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, CooldownReduction);
|
||||
|
||||
/** @brief 格挡强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_BlockPower, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData BlockPower;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, BlockPower);
|
||||
|
||||
/** @brief 破防强度。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_GuardBreakPower, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData GuardBreakPower;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, GuardBreakPower);
|
||||
|
||||
/** @brief 韧性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Poise, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData Poise;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, Poise);
|
||||
|
||||
/** @brief 韧性伤害。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_PoiseDamage, Category="PHY|Attributes|Combat")
|
||||
FGameplayAttributeData PoiseDamage;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCombatAttributeSet, PoiseDamage);
|
||||
|
||||
/** @brief 按默认配置中的基础属性计算并写入次级属性。 */
|
||||
void InitializeFromConfiguredCoreDefaults();
|
||||
|
||||
/** @brief 按指定基础属性集计算并写入次级属性。 */
|
||||
void InitializeFromCoreAttributes(const UPHYCoreAttributeSet* CoreAttributes);
|
||||
|
||||
protected:
|
||||
/** @brief 复制当前生命变化。 */
|
||||
UFUNCTION() void OnRep_Health(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制生命上限变化。 */
|
||||
UFUNCTION() void OnRep_MaxHealth(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制当前法力变化。 */
|
||||
UFUNCTION() void OnRep_Mana(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制法力上限变化。 */
|
||||
UFUNCTION() void OnRep_MaxMana(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制当前耐力变化。 */
|
||||
UFUNCTION() void OnRep_Stamina(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制耐力上限变化。 */
|
||||
UFUNCTION() void OnRep_MaxStamina(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制物理攻击强度变化。 */
|
||||
UFUNCTION() void OnRep_PhysicalAttackPower(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制法术强度变化。 */
|
||||
UFUNCTION() void OnRep_SpellPower(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制护甲变化。 */
|
||||
UFUNCTION() void OnRep_Armor(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制魔法抗性变化。 */
|
||||
UFUNCTION() void OnRep_MagicResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制命中率变化。 */
|
||||
UFUNCTION() void OnRep_Accuracy(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制闪避率变化。 */
|
||||
UFUNCTION() void OnRep_Evasion(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制暴击率变化。 */
|
||||
UFUNCTION() void OnRep_CriticalChance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制暴击伤害倍率变化。 */
|
||||
UFUNCTION() void OnRep_CriticalDamage(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制攻击速度倍率变化。 */
|
||||
UFUNCTION() void OnRep_AttackSpeed(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制冷却缩减比例变化。 */
|
||||
UFUNCTION() void OnRep_CooldownReduction(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制格挡强度变化。 */
|
||||
UFUNCTION() void OnRep_BlockPower(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制破防强度变化。 */
|
||||
UFUNCTION() void OnRep_GuardBreakPower(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制韧性变化。 */
|
||||
UFUNCTION() void OnRep_Poise(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制韧性伤害变化。 */
|
||||
UFUNCTION() void OnRep_PoiseDamage(const FGameplayAttributeData& OldValue);
|
||||
};
|
||||
@@ -0,0 +1,78 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "AbilitySystem/Attributes/PHYAttributeSet.h"
|
||||
#include "PHYCoreAttributeSet.generated.h"
|
||||
|
||||
/**
|
||||
* @brief PHY 基础属性集,作为所有玩家和 AI 的通用根属性。
|
||||
*/
|
||||
UCLASS(BlueprintType)
|
||||
class PHY_API UPHYCoreAttributeSet : public UAttributeSet
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/** @brief 构造基础属性并读取默认配置。 */
|
||||
UPHYCoreAttributeSet();
|
||||
|
||||
/** @brief 注册属性复制。 */
|
||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||
|
||||
/** @brief 力量,影响物理攻击、格挡、破防和负重倾向。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Strength, Category="PHY|Attributes|Core")
|
||||
FGameplayAttributeData Strength;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Strength);
|
||||
|
||||
/** @brief 灵巧,影响暴击、攻速、命中和闪避倾向。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Dexterity, Category="PHY|Attributes|Core")
|
||||
FGameplayAttributeData Dexterity;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Dexterity);
|
||||
|
||||
/** @brief 体魄,影响生命、护甲、耐力和韧性倾向。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Vitality, Category="PHY|Attributes|Core")
|
||||
FGameplayAttributeData Vitality;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Vitality);
|
||||
|
||||
/** @brief 智力,影响法术强度、法力和冷却缩减倾向。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Intelligence, Category="PHY|Attributes|Core")
|
||||
FGameplayAttributeData Intelligence;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Intelligence);
|
||||
|
||||
/** @brief 精神,影响法力、魔法抗性和元素抗性倾向。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Spirit, Category="PHY|Attributes|Core")
|
||||
FGameplayAttributeData Spirit;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Spirit);
|
||||
|
||||
/** @brief 感知,影响命中、暴击、弱点和穿透倾向。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Perception, Category="PHY|Attributes|Core")
|
||||
FGameplayAttributeData Perception;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Perception);
|
||||
|
||||
protected:
|
||||
/** @brief 复制力量。 */
|
||||
UFUNCTION()
|
||||
void OnRep_Strength(const FGameplayAttributeData& OldValue);
|
||||
|
||||
/** @brief 复制灵巧。 */
|
||||
UFUNCTION()
|
||||
void OnRep_Dexterity(const FGameplayAttributeData& OldValue);
|
||||
|
||||
/** @brief 复制体魄。 */
|
||||
UFUNCTION()
|
||||
void OnRep_Vitality(const FGameplayAttributeData& OldValue);
|
||||
|
||||
/** @brief 复制智力。 */
|
||||
UFUNCTION()
|
||||
void OnRep_Intelligence(const FGameplayAttributeData& OldValue);
|
||||
|
||||
/** @brief 复制精神。 */
|
||||
UFUNCTION()
|
||||
void OnRep_Spirit(const FGameplayAttributeData& OldValue);
|
||||
|
||||
/** @brief 复制感知。 */
|
||||
UFUNCTION()
|
||||
void OnRep_Perception(const FGameplayAttributeData& OldValue);
|
||||
};
|
||||
@@ -0,0 +1,155 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "AbilitySystem/Attributes/PHYAttributeSet.h"
|
||||
#include "PHYElementAttributeSet.generated.h"
|
||||
|
||||
class UPHYCoreAttributeSet;
|
||||
|
||||
/**
|
||||
* @brief PHY 元素进攻与防御属性集。
|
||||
*/
|
||||
UCLASS(BlueprintType)
|
||||
class PHY_API UPHYElementAttributeSet : public UAttributeSet
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/** @brief 构造元素属性并按默认基础属性推导首期数值。 */
|
||||
UPHYElementAttributeSet();
|
||||
|
||||
/** @brief 注册属性复制。 */
|
||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||
|
||||
/** @brief 限制元素比例属性范围。 */
|
||||
virtual void PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue) override;
|
||||
|
||||
/** @brief 按默认配置中的基础属性计算并写入元素属性。 */
|
||||
void InitializeFromConfiguredCoreDefaults();
|
||||
|
||||
/** @brief 按指定基础属性集计算并写入元素属性。 */
|
||||
void InitializeFromCoreAttributes(const UPHYCoreAttributeSet* CoreAttributes);
|
||||
|
||||
/** @brief 火元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_FireDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData FireDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, FireDamageBonus);
|
||||
|
||||
/** @brief 水元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_WaterDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData WaterDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, WaterDamageBonus);
|
||||
|
||||
/** @brief 冰元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_IceDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData IceDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, IceDamageBonus);
|
||||
|
||||
/** @brief 雷元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_LightningDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData LightningDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, LightningDamageBonus);
|
||||
|
||||
/** @brief 地元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_EarthDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData EarthDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, EarthDamageBonus);
|
||||
|
||||
/** @brief 风元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_WindDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData WindDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, WindDamageBonus);
|
||||
|
||||
/** @brief 光元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_LightDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData LightDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, LightDamageBonus);
|
||||
|
||||
/** @brief 暗元素伤害加成。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_DarkDamageBonus, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData DarkDamageBonus;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, DarkDamageBonus);
|
||||
|
||||
/** @brief 火元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_FireResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData FireResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, FireResistance);
|
||||
|
||||
/** @brief 水元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_WaterResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData WaterResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, WaterResistance);
|
||||
|
||||
/** @brief 冰元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_IceResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData IceResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, IceResistance);
|
||||
|
||||
/** @brief 雷元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_LightningResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData LightningResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, LightningResistance);
|
||||
|
||||
/** @brief 地元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_EarthResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData EarthResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, EarthResistance);
|
||||
|
||||
/** @brief 风元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_WindResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData WindResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, WindResistance);
|
||||
|
||||
/** @brief 光元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_LightResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData LightResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, LightResistance);
|
||||
|
||||
/** @brief 暗元素抗性。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_DarkResistance, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData DarkResistance;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, DarkResistance);
|
||||
|
||||
/** @brief 通用元素穿透,首期不按元素拆分。 */
|
||||
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_ElementPenetration, Category="PHY|Attributes|Element")
|
||||
FGameplayAttributeData ElementPenetration;
|
||||
PHY_ATTRIBUTE_ACCESSORS(UPHYElementAttributeSet, ElementPenetration);
|
||||
|
||||
protected:
|
||||
/** @brief 复制火元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_FireDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制水元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_WaterDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制冰元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_IceDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制雷元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_LightningDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制地元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_EarthDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制风元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_WindDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制光元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_LightDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制暗元素伤害加成变化。 */
|
||||
UFUNCTION() void OnRep_DarkDamageBonus(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制火元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_FireResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制水元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_WaterResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制冰元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_IceResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制雷元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_LightningResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制地元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_EarthResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制风元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_WindResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制光元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_LightResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制暗元素抗性变化。 */
|
||||
UFUNCTION() void OnRep_DarkResistance(const FGameplayAttributeData& OldValue);
|
||||
/** @brief 复制通用元素穿透变化。 */
|
||||
UFUNCTION() void OnRep_ElementPenetration(const FGameplayAttributeData& OldValue);
|
||||
};
|
||||
Reference in New Issue
Block a user