diff --git a/Config/DefaultGameplayTags.ini b/Config/DefaultGameplayTags.ini index 30b2d63..4444572 100644 --- a/Config/DefaultGameplayTags.ini +++ b/Config/DefaultGameplayTags.ini @@ -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="角色采集物品") diff --git a/Content/Blueprint/Level/Actor/Static/BP_Stone.uasset b/Content/Blueprint/Level/Actor/Static/BP_Stone.uasset index e536777..4ea6c42 100644 Binary files a/Content/Blueprint/Level/Actor/Static/BP_Stone.uasset and b/Content/Blueprint/Level/Actor/Static/BP_Stone.uasset differ diff --git a/Content/Data/Ability/FoxUltimateDataAsset.uasset b/Content/Data/Ability/FoxUltimateDataAsset.uasset new file mode 100644 index 0000000..1dabde1 Binary files /dev/null and b/Content/Data/Ability/FoxUltimateDataAsset.uasset differ diff --git a/Content/Gas/Ability/Role/Fox/GA_FoxUltimate.uasset b/Content/Gas/Ability/Role/Fox/GA_FoxUltimate.uasset index a257f5d..0febff6 100644 Binary files a/Content/Gas/Ability/Role/Fox/GA_FoxUltimate.uasset and b/Content/Gas/Ability/Role/Fox/GA_FoxUltimate.uasset differ diff --git a/Content/Gas/Effects/Calc/MMC_FoxUltimateCostCalc.uasset b/Content/Gas/Effects/Calc/MMC_FoxUltimateCostCalc.uasset new file mode 100644 index 0000000..0e2f22a Binary files /dev/null and b/Content/Gas/Effects/Calc/MMC_FoxUltimateCostCalc.uasset differ diff --git a/Content/Gas/Effects/Role/Fox/GE_FoxUltimateCost.uasset b/Content/Gas/Effects/Role/Fox/GE_FoxUltimateCost.uasset index bb91c84..8c5f84f 100644 Binary files a/Content/Gas/Effects/Role/Fox/GE_FoxUltimateCost.uasset and b/Content/Gas/Effects/Role/Fox/GE_FoxUltimateCost.uasset differ diff --git a/Content/Gas/Effects/Role/Fox/GE_UltimateCooldown.uasset b/Content/Gas/Effects/Role/Fox/GE_UltimateCooldown.uasset index 60eb192..d2a5c0c 100644 Binary files a/Content/Gas/Effects/Role/Fox/GE_UltimateCooldown.uasset and b/Content/Gas/Effects/Role/Fox/GE_UltimateCooldown.uasset differ diff --git a/Source/BusyRabbit/Private/BlueprintLibrary/BusyAscLibrary.cpp b/Source/BusyRabbit/Private/BlueprintLibrary/BusyAscLibrary.cpp new file mode 100644 index 0000000..3360e98 --- /dev/null +++ b/Source/BusyRabbit/Private/BlueprintLibrary/BusyAscLibrary.cpp @@ -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(Context.GetAbility())) + { + return Ability->GetData(); + } + return nullptr; +} + +AActor* UBusyAscLibrary::GetEffectInstigator(const FGameplayEffectSpec& Spec) +{ + return Spec.GetEffectContext().GetInstigator(); + +} diff --git a/Source/BusyRabbit/Private/BlueprintLibrary/BusyCombatLibrary.cpp b/Source/BusyRabbit/Private/BlueprintLibrary/BusyCombatLibrary.cpp new file mode 100644 index 0000000..3813ee6 --- /dev/null +++ b/Source/BusyRabbit/Private/BlueprintLibrary/BusyCombatLibrary.cpp @@ -0,0 +1 @@ +#include "BlueprintLibrary/BusyCombatLibrary.h" diff --git a/Source/BusyRabbit/Private/Tables/BusyPreCookTable.cpp b/Source/BusyRabbit/Private/Data/BusyPreCookTable.cpp similarity index 100% rename from Source/BusyRabbit/Private/Tables/BusyPreCookTable.cpp rename to Source/BusyRabbit/Private/Data/BusyPreCookTable.cpp diff --git a/Source/BusyRabbit/Private/Gas/BusyGameAbility.cpp b/Source/BusyRabbit/Private/Gas/BusyGameAbility.cpp index d1ec3f0..a240d53 100644 --- a/Source/BusyRabbit/Private/Gas/BusyGameAbility.cpp +++ b/Source/BusyRabbit/Private/Gas/BusyGameAbility.cpp @@ -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; + } +} + diff --git a/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp b/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp index 978911b..aba82c7 100644 --- a/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp +++ b/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp @@ -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) diff --git a/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp b/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp index fca496e..4bee203 100644 --- a/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp +++ b/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp @@ -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" diff --git a/Source/BusyRabbit/Public/BlueprintLibrary/BusyAscLibrary.h b/Source/BusyRabbit/Public/BlueprintLibrary/BusyAscLibrary.h new file mode 100644 index 0000000..113d211 --- /dev/null +++ b/Source/BusyRabbit/Public/BlueprintLibrary/BusyAscLibrary.h @@ -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); +}; diff --git a/Source/BusyRabbit/Public/BlueprintLibrary/BusyCombatLibrary.h b/Source/BusyRabbit/Public/BlueprintLibrary/BusyCombatLibrary.h new file mode 100644 index 0000000..2c2918d --- /dev/null +++ b/Source/BusyRabbit/Public/BlueprintLibrary/BusyCombatLibrary.h @@ -0,0 +1,7 @@ +#pragma once + +class BusyCombatLibrary +{ +public: + +}; diff --git a/Source/BusyRabbit/Public/Data/Ability/BusyAbilityDataAssetBase.h b/Source/BusyRabbit/Public/Data/Ability/BusyAbilityDataAssetBase.h new file mode 100644 index 0000000..e43a815 --- /dev/null +++ b/Source/BusyRabbit/Public/Data/Ability/BusyAbilityDataAssetBase.h @@ -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 TargetAbility; +}; \ No newline at end of file diff --git a/Source/BusyRabbit/Public/Data/Ability/Role/FoxAbilityDataAsset.h b/Source/BusyRabbit/Public/Data/Ability/Role/FoxAbilityDataAsset.h new file mode 100644 index 0000000..d165ec8 --- /dev/null +++ b/Source/BusyRabbit/Public/Data/Ability/Role/FoxAbilityDataAsset.h @@ -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; + +}; \ No newline at end of file diff --git a/Source/BusyRabbit/Public/Tables/BusyPawnConfig.h b/Source/BusyRabbit/Public/Data/BusyPawnConfig.h similarity index 100% rename from Source/BusyRabbit/Public/Tables/BusyPawnConfig.h rename to Source/BusyRabbit/Public/Data/BusyPawnConfig.h diff --git a/Source/BusyRabbit/Public/Tables/BusyPreCookTable.h b/Source/BusyRabbit/Public/Data/BusyPreCookTable.h similarity index 100% rename from Source/BusyRabbit/Public/Tables/BusyPreCookTable.h rename to Source/BusyRabbit/Public/Data/BusyPreCookTable.h diff --git a/Source/BusyRabbit/Public/Gas/BusyGameAbility.h b/Source/BusyRabbit/Public/Gas/BusyGameAbility.h index 875dc31..8605b1b 100644 --- a/Source/BusyRabbit/Public/Gas/BusyGameAbility.h +++ b/Source/BusyRabbit/Public/Gas/BusyGameAbility.h @@ -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 SoftDataAsset; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, DisplayName="技能效果") TMap> AbilityEffects; + + +protected: + UPROPERTY() + UBusyAbilityDataAssetBase* Data; + }; diff --git a/Source/BusyRabbit/Public/Gas/BusyMagnitudeCalculation.h b/Source/BusyRabbit/Public/Gas/BusyMagnitudeCalculation.h new file mode 100644 index 0000000..3ba0960 --- /dev/null +++ b/Source/BusyRabbit/Public/Gas/BusyMagnitudeCalculation.h @@ -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; +}