暂存现阶段所有代码 #7

狐狸技能数据化配置暂时搁置
This commit is contained in:
2025-10-20 22:23:51 +08:00
parent 1e04c04600
commit 917322934d
21 changed files with 196 additions and 6 deletions

View File

@ -11,6 +11,12 @@ NetIndexFirstBitSegment=16
+GameplayTagList=(Tag="Ability.Block.UltimatePlaying",DevComment="大招正在释放中")
+GameplayTagList=(Tag="Ability.Flags.Cooldown",DevComment="技能冷却")
+GameplayTagList=(Tag="Ability.Flags.Recast",DevComment="可以再次释放技能的标记")
+GameplayTagList=(Tag="Ability.Fox",DevComment="狐狸技能标签")
+GameplayTagList=(Tag="Ability.Fox.UltimateStage1",DevComment="一阶大招")
+GameplayTagList=(Tag="Ability.Fox.UltimateStage2",DevComment="二阶大招就绪标签")
+GameplayTagList=(Tag="Ability.Fox.UltimateStage3",DevComment="三阶大招就绪")
+GameplayTagList=(Tag="Ability.Recast",DevComment="技能可重新释放标签")
+GameplayTagList=(Tag="Ability.Recast.Ultimate",DevComment="大招可重新释放")
+GameplayTagList=(Tag="Ability.Role.AttributeConsume",DevComment="角色属性损耗debuff")
+GameplayTagList=(Tag="Ability.Role.EatFood",DevComment="干饭")
+GameplayTagList=(Tag="Ability.Role.Pick",DevComment="角色采集物品")

Binary file not shown.

View File

@ -0,0 +1,20 @@
#include "BlueprintLibrary/BusyAscLibrary.h"
#include "GameplayEffectTypes.h"
#include "Gas/BusyGameAbility.h"
UBusyAbilityDataAssetBase* UBusyAscLibrary::GetAbilityDataAssetByEffect(const FGameplayEffectSpec& Spec)
{
const FGameplayEffectContextHandle& Context = Spec.GetEffectContext();
if (const UBusyGameAbility* Ability = Cast<const UBusyGameAbility>(Context.GetAbility()))
{
return Ability->GetData();
}
return nullptr;
}
AActor* UBusyAscLibrary::GetEffectInstigator(const FGameplayEffectSpec& Spec)
{
return Spec.GetEffectContext().GetInstigator();
}

View File

@ -0,0 +1 @@
#include "BlueprintLibrary/BusyCombatLibrary.h"

View File

@ -21,7 +21,7 @@ bool UBusyGameAbility::GetAbilityEffectSpecHandle(const FName& EffectName, const
// 2. 创建并设置GameplayEffect上下文
FGameplayEffectContextHandle EffectContextHandle = Asc->MakeEffectContext();
// 3. 将当前对象设置为效果来源
EffectContextHandle.AddSourceObject(this);
@ -31,3 +31,13 @@ bool UBusyGameAbility::GetAbilityEffectSpecHandle(const FName& EffectName, const
return Handle.IsValid();
}
void UBusyGameAbility::PostInitProperties()
{
Super::PostInitProperties();
if (SoftDataAsset)
{
Data = SoftDataAsset.LoadSynchronous();
Data->TargetAbility = this;
}
}

View File

@ -6,7 +6,7 @@
#include "SpineSkeletonAnimationComponent.h"
#include "Gas/BusyGameAbility.h"
#include "Level/Actor/Components/BusyPawnMovement.h"
#include "Tables/BusyPawnConfig.h"
#include "Data/BusyPawnConfig.h"
DEFINE_LOG_CATEGORY(LogBusyPawn)

View File

@ -1,8 +1,6 @@
#include "Level/Actor/BusyPlayerRole.h"
#include "Camera/CameraComponent.h"
#include "BusyGameplayLibrary.h"
#include "Animation/AnimAttributes.h"
#include "Tables/BusyPawnConfig.h"
#include "Data/BusyPawnConfig.h"
#include "GameFramework/SpringArmComponent.h"

View File

@ -0,0 +1,18 @@
#pragma once
#include "Kismet/BlueprintFunctionLibrary.h"
#include "BusyAscLibrary.generated.h"
struct FGameplayEffectSpec;
class UBusyAbilityDataAssetBase;
UCLASS()
class UBusyAscLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
static UBusyAbilityDataAssetBase* GetAbilityDataAssetByEffect(const FGameplayEffectSpec& Spec);
UFUNCTION(BlueprintCallable)
static AActor* GetEffectInstigator(const FGameplayEffectSpec& Spec);
};

View File

@ -0,0 +1,7 @@
#pragma once
class BusyCombatLibrary
{
public:
};

View File

@ -0,0 +1,23 @@
#pragma once
#include "BusyAbilityDataAssetBase.generated.h"
class UBusyGameAbility;
UCLASS(BlueprintType)
class UBusyAbilityDataAssetBase : public UDataAsset
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="技能ID")
FName AbilityID;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="技能名称")
FText AbilityName;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="备注")
FString AbilityDesc;
TWeakObjectPtr<UBusyGameAbility> TargetAbility;
};

View File

@ -0,0 +1,72 @@
#pragma once
#include "GameplayTagContainer.h"
#include "Data/Ability/BusyAbilityDataAssetBase.h"
#include "FoxAbilityDataAsset.generated.h"
/**
* 狐狸大招技能配置
*/
UCLASS(BlueprintType)
class UFoxUltimateDataAsset : public UBusyAbilityDataAssetBase
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶消耗", Category="技能消耗")
float FirstStageCost = 5.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶消耗", Category="技能消耗")
float SecondStageCost = 8.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶消耗", Category="技能消耗")
float LastStageCost = 12.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶伤害系数", Category="伤害系数")
float FirstStageDamageFactor = 5.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶伤害系数", Category="伤害系数")
float SecondStageDamageFactor = 8.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶伤害系数", Category="伤害系数")
float LastStageDamageFactor = 12.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶速度系数", Category="速度系数")
float FirstStageSpeedFactor = 5.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶速度系数", Category="速度系数")
float SecondStageSpeedFactor = 8.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶一段速度系数", Category="速度系数")
float LastStageNormalSpeedFactor = 12.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶二段速度系数", Category="速度系数")
float LastStageSprintSpeedFactor = 12.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可释放二阶标签", Category="技能标签")
FGameplayTag SecondStageRecastTag;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可释放三阶标签", Category="技能标签")
FGameplayTag LastStageRecastTag;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶标签", Category="技能标签")
FGameplayTag FirstStageTag;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶标签", Category="技能标签")
FGameplayTag SecondStageTag;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶标签", Category="技能标签")
FGameplayTag LastStageTag;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可重新释放时长")
float RecastWindow = 6.f;
UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="冷却时间")
float CooldownTime = 15.f;
};

View File

@ -1,5 +1,6 @@
#pragma once
#include "slua.h"
#include "Data/Ability/BusyAbilityDataAssetBase.h"
#include "Abilities/GameplayAbility.h"
#include "BusyGameAbility.generated.h"
@ -19,12 +20,25 @@ public:
public:
UFUNCTION(BlueprintCallable)
bool GetAbilityEffectSpecHandle(const FName& EffectName, const UAbilitySystemComponent* Asc, const int32 Level, FGameplayEffectSpecHandle& Handle)const;
public:
virtual void PostInitProperties()override;
UBusyAbilityDataAssetBase* GetData()const { return Data; }
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FString LuaFilePath;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TSoftObjectPtr<UBusyAbilityDataAssetBase> SoftDataAsset;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, DisplayName="技能效果")
TMap<FName, TSubclassOf<UGameplayEffect>> AbilityEffects;
protected:
UPROPERTY()
UBusyAbilityDataAssetBase* Data;
};

View File

@ -0,0 +1,21 @@
#pragma once
#include "LuaOverriderInterface.h"
#include "GameplayModMagnitudeCalculation.h"
#include "BusyMagnitudeCalculation.generated.h"
UCLASS()
class UBusyMagnitudeCalculation : public UGameplayModMagnitudeCalculation, public ILuaOverriderInterface
{
GENERATED_BODY()
public:
virtual FString GetLuaFilePath_Implementation();
protected:
UPROPERTY(EditDefaultsOnly)
FString LuaFilePath;
};
inline FString UBusyMagnitudeCalculation::GetLuaFilePath_Implementation()
{
return LuaFilePath;
}