From 25f8adc0a89a027c2543d419f10c6e980f23a105 Mon Sep 17 00:00:00 2001 From: 997146918 <997146918@qq.com> Date: Tue, 22 Jul 2025 15:06:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A2=9E=E5=BC=BA=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=8A=80=E8=83=BD=E6=95=88=E6=9E=9C=E7=9A=84=E6=8A=80?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Content/DataTable/PawnSkills.uasset | Bin 19415 -> 20618 bytes ProjectFish/Source/ProjectFish/Definations.h | 3 +- .../Source/ProjectFish/Skill/Skill.cpp | 8 +++-- ProjectFish/Source/ProjectFish/Skill/Skill.h | 5 +++ .../Source/ProjectFish/Skill/SkillEffect.h | 5 ++- .../SkillEffect_EnhanceFishRod.cpp | 22 +++++++++--- .../SkillEffects/SkillEffect_EnhanceSkill.cpp | 32 ++++++++++++++++++ .../SkillEffects/SkillEffect_EnhanceSkill.h | 19 +++++++++++ 8 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.cpp create mode 100644 ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.h diff --git a/ProjectFish/Content/DataTable/PawnSkills.uasset b/ProjectFish/Content/DataTable/PawnSkills.uasset index b3d527b98a95b2d84a587649b4de2e8693d913df..1776439d732fe7ea4cb7d2a104337a078e0e3cc0 100644 GIT binary patch literal 20618 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 literal 19415 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 v!)&Un{Vf99MgNPg2M#|v+_LET-@u(this, USkillEffect_SER::StaticClass()); break; - case ESkillEffectType::EnHanceFishRod: + case ESkillEffectType::EnhanceFishRod: skillEffect = NewObject(this, USkillEffect_EnhanceFishRod::StaticClass()); break; - default: + case ESkillEffectType::EnhanceSkill: + skillEffect = NewObject(this, USkillEffect_EnhanceSkill::StaticClass()); + break; + default: const UEnum* EnumPtr = StaticEnum(); UE_LOG(LogTemp, Error, TEXT("没有配置 %s类型的Skill Effect"), *EnumPtr->GetNameStringByValue(static_cast(effectData.EffectType))) } diff --git a/ProjectFish/Source/ProjectFish/Skill/Skill.h b/ProjectFish/Source/ProjectFish/Skill/Skill.h index 1c544d9..0c7705d 100644 --- a/ProjectFish/Source/ProjectFish/Skill/Skill.h +++ b/ProjectFish/Source/ProjectFish/Skill/Skill.h @@ -28,6 +28,11 @@ public: class APawnWithSkill* GetOwner(); FSkillData& GetSkillData(); + TArray GetAllSkillEffects() + { + return SkillEffects; + } + FIntPoint GetBagPos(); void SetSkillData( FSkillData SkillData); UFUNCTION(BlueprintCallable) diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h b/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h index 548024b..87bd62f 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h @@ -23,7 +23,10 @@ public: UFUNCTION(BlueprintPure) virtual FString GetSkillEffectDes(); - + FSkillEffectData& GetEffectData() + { + return effectData; + } private: void GetEffectTargetsByTargetType(const FSkillContext& context, TArray& result); protected: diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceFishRod.cpp b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceFishRod.cpp index 2e6aec4..14e2ff4 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceFishRod.cpp +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceFishRod.cpp @@ -9,13 +9,27 @@ void USkillEffect_EnhanceFishRod::Execute(const FSkillContext& context) { Super::Execute(context); - APawnWithSkill* OwnerPawn = context.OwnerSkill->GetOwner(); - if (OwnerPawn->GetComponentByClass(UFishingRodComponent::StaticClass()) != NULL) + TArray targets = GetApplyTargets(context); + for (auto target: targets) { - UFishingRodComponent* rod = Cast(OwnerPawn->GetComponentByClass(UFishingRodComponent::StaticClass())); - rod->AddFishRodDamage( (int32)(effectData.EffectValue)); + if (!target->GetClass()->IsChildOf(APawnWithSkill::StaticClass())) + { + UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a pawn with fish rod"), *(OwnerSkill->GetSkillName())); + } + else + { + //修改技能的冷却时间 + APawnWithSkill* OwnerPawn = Cast(target); + if (OwnerPawn->GetComponentByClass(UFishingRodComponent::StaticClass()) != NULL) + { + UFishingRodComponent* rod = Cast(OwnerPawn->GetComponentByClass(UFishingRodComponent::StaticClass())); + rod->AddFishRodDamage( (int32)(effectData.EffectValue)); + } + } } + + } FString USkillEffect_EnhanceFishRod::GetSkillEffectDes() diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.cpp b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.cpp new file mode 100644 index 0000000..cb626ac --- /dev/null +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.cpp @@ -0,0 +1,32 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "SkillEffect_EnhanceSkill.h" +#include "ProjectFish/Skill/Skill.h" + +void USkillEffect_EnhanceSkill::Execute(const FSkillContext& context) +{ + Super::Execute(context); + TArray targets = GetApplyTargets(context); + for (auto target: targets) + { + if (!target->GetClass()->IsChildOf(USkill::StaticClass())) + { + UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a skill"), *(OwnerSkill->GetSkillName())); + } + else + { + //修改技能的冷却时间 + USkill* targetSkill = Cast(target); + for (auto skilleffect: targetSkill->GetAllSkillEffects()) + { + skilleffect->GetEffectData().EffectValue +=(int32)(effectData.EffectValue)*(skilleffect->GetEffectData().EffectValue/FMath::Abs(skilleffect->GetEffectData().EffectValue)); + } + } + } +} + +FString USkillEffect_EnhanceSkill::GetSkillEffectDes() +{ + return FString::Printf(TEXT("增强目标技能 %d点"), (int32)(effectData.EffectValue)); +} diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.h b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.h new file mode 100644 index 0000000..8995708 --- /dev/null +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_EnhanceSkill.h @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "ProjectFish/Skill/SkillEffect.h" +#include "SkillEffect_EnhanceSkill.generated.h" + +/** + * + */ +UCLASS() +class PROJECTFISH_API USkillEffect_EnhanceSkill : public USkillEffect +{ + GENERATED_BODY() +public: + void Execute(const FSkillContext& context) override; + FString GetSkillEffectDes() override; +};