添加鱼竿增强技能效果

This commit is contained in:
997146918 2025-07-22 10:57:27 +08:00
parent 7b57eaa7ac
commit 59c715af32
7 changed files with 70 additions and 5 deletions

View File

@ -18,6 +18,11 @@ UFishingRodComponent::UFishingRodComponent()
// ... // ...
} }
void UFishingRodComponent::AddFishRodDamage(int32 Damage)
{
FishRodData.Damage += Damage;
}
// Called when the game starts // Called when the game starts
void UFishingRodComponent::BeginPlay() void UFishingRodComponent::BeginPlay()

View File

@ -17,7 +17,7 @@ class PROJECTFISH_API UFishingRodComponent : public UActorComponent
public: public:
// Sets default values for this component's properties // Sets default values for this component's properties
UFishingRodComponent(); UFishingRodComponent();
void AddFishRodDamage(int32 Damage);
protected: protected:
// Called when the game starts // Called when the game starts
virtual void BeginPlay() override; virtual void BeginPlay() override;

View File

@ -17,6 +17,7 @@ enum class ESkillEffectType: uint8
Charge UMETA(DisplayName = "充能", ToolTip = "使技能的冷却进度加快"), Charge UMETA(DisplayName = "充能", ToolTip = "使技能的冷却进度加快"),
ModifySpeed UMETA(DisplayName = "速度修改", ToolTip = "使技能冷却进度倍率进展 持续指定时间"), ModifySpeed UMETA(DisplayName = "速度修改", ToolTip = "使技能冷却进度倍率进展 持续指定时间"),
SkillEnduranceRestore UMETA(DisplayName = "技能耐久度恢复", ToolTip = "使技能耐久度恢复"), SkillEnduranceRestore UMETA(DisplayName = "技能耐久度恢复", ToolTip = "使技能耐久度恢复"),
EnHanceFishRod UMETA(DisplayName = "增强鱼竿", ToolTip = "使鱼竿上海增加"),
}; };
//技能对象类型 //技能对象类型

View File

@ -6,6 +6,7 @@
#include "SkillTrigger.h" #include "SkillTrigger.h"
#include "SkillEffects/SkillEffect_Charge.h" #include "SkillEffects/SkillEffect_Charge.h"
#include "SkillEffects/SkillEffect_Damage.h" #include "SkillEffects/SkillEffect_Damage.h"
#include "SkillEffects/SkillEffect_EnhanceFishRod.h"
#include "SkillEffects/SkillEffect_Heal.h" #include "SkillEffects/SkillEffect_Heal.h"
#include "SkillEffects/SkillEffect_ModifyCD.h" #include "SkillEffects/SkillEffect_ModifyCD.h"
#include "SkillEffects/SkillEffect_ModifySpeed.h" #include "SkillEffects/SkillEffect_ModifySpeed.h"
@ -42,6 +43,12 @@ void USkill::InitSkill(APawnWithSkill* owner, USkillManager* skillManager, FSkil
case ESkillEffectType::SkillEnduranceRestore: case ESkillEffectType::SkillEnduranceRestore:
skillEffect = NewObject<USkillEffect>(this, USkillEffect_SER::StaticClass()); skillEffect = NewObject<USkillEffect>(this, USkillEffect_SER::StaticClass());
break; break;
case ESkillEffectType::EnHanceFishRod:
skillEffect = NewObject<USkillEffect>(this, USkillEffect_EnhanceFishRod::StaticClass());
break;
default:
const UEnum* EnumPtr = StaticEnum<ESkillEffectType>();
UE_LOG(LogTemp, Error, TEXT("没有配置 %s类型的Skill Effect"), *EnumPtr->GetNameStringByValue(static_cast<int64>(effectData.EffectType)))
} }
if (IsValid(skillEffect)) if (IsValid(skillEffect))
{ {
@ -56,11 +63,20 @@ void USkill::InitSkillTrigger()
{ {
if (!SkillData.bActiveSkill) if (!SkillData.bActiveSkill)
{ {
USkillTrigger* SkillTrigger = NewObject<USkillTrigger>(this, SkillData.SkillTrigger); USkillTrigger* SkillTrigger = NewObject<USkillTrigger>(this, SkillData.SkillTrigger);
FSkillContext context; if (SkillTrigger)
context.OwnerSkill = this; {
context.SkillManager = SkillManager; FSkillContext context;
SkillTrigger->Init(context); context.OwnerSkill = this;
context.SkillManager = SkillManager;
SkillTrigger->Init(context);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("没有Trigger的被动技能直接触发"));
ExecuteSkill();
}
} }
} }

View File

@ -0,0 +1,24 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "SkillEffect_EnhanceFishRod.h"
#include "ProjectFish/Components/FishingRodComponent.h"
#include "ProjectFish/Skill/Skill.h"
void USkillEffect_EnhanceFishRod::Execute(const FSkillContext& context)
{
Super::Execute(context);
APawnWithSkill* OwnerPawn = context.OwnerSkill->GetOwner();
if (OwnerPawn->GetComponentByClass(UFishingRodComponent::StaticClass()) != NULL)
{
UFishingRodComponent* rod = Cast<UFishingRodComponent>(OwnerPawn->GetComponentByClass(UFishingRodComponent::StaticClass()));
rod->AddFishRodDamage( (int32)(effectData.EffectValue));
}
}
FString USkillEffect_EnhanceFishRod::GetSkillEffectDes()
{
return FString::Printf(TEXT("使鱼竿的伤害增加 %d点"), (int32)(effectData.EffectValue));
}

View File

@ -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_EnhanceFishRod.generated.h"
/**
*
*/
UCLASS()
class PROJECTFISH_API USkillEffect_EnhanceFishRod : public USkillEffect
{
GENERATED_BODY()
public:
void Execute(const FSkillContext& context) override;
FString GetSkillEffectDes() override;
};