Updated Status System to Add Buff Jelly Functionality
This commit is contained in:
parent
d197dc4d7e
commit
e8e4e86873
BIN
Content/Blueprints/Combat_UI/CombatCharacter.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Combat_UI/CombatCharacter.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Blueprints/Combat_UI/Combat_UI.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Combat_UI/Combat_UI.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Blueprints/StatusEffects/BP_StrengthBuff.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/StatusEffects/BP_StrengthBuff.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Status_UI/StatusIcon.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Status_UI/StatusIcon.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Blueprints/Status_UI/StatusIndicator.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Status_UI/StatusIndicator.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Levels/Build.umap
(Stored with Git LFS)
BIN
Content/Levels/Build.umap
(Stored with Git LFS)
Binary file not shown.
@ -10,8 +10,8 @@
|
||||
|
||||
UEatableItems::UEatableItems()
|
||||
{
|
||||
static ConstructorHelpers::FClassFinder<UStatusEffect> StatusEffectClassFinder(TEXT("/Game/Blueprints/StatusEffects/BP_HealOverTime"));
|
||||
HealOverTimeStatusEffect = StatusEffectClassFinder.Class;
|
||||
static ConstructorHelpers::FClassFinder<UStatusEffect> StrengthBuffClassFinder(TEXT("/Game/Blueprints/StatusEffects/BP_StrengthBuff"));
|
||||
StrengthBuffStatusEffect = StrengthBuffClassFinder.Class;
|
||||
}
|
||||
|
||||
void UEatableItems::Use(ATempCharacter* Character)
|
||||
@ -22,8 +22,6 @@ void UEatableItems::Use(ATempCharacter* Character)
|
||||
{
|
||||
if (Character->Health < 100)
|
||||
{
|
||||
// UStatusSystem* StatusSystem = Character->FindComponentByClass<UStatusSystem>();
|
||||
// StatusSystem->AddStatusEffect(NewObject<UStatusEffect>(Character, HealOverTimeStatusEffect));
|
||||
Character->Health += 20;
|
||||
Character->Inventory->RemoveItem(this);
|
||||
}
|
||||
@ -36,7 +34,8 @@ void UEatableItems::Use(ATempCharacter* Character)
|
||||
|
||||
if (isDamageBuffItem)
|
||||
{
|
||||
// need to add the damage buff functionality here
|
||||
UStatusSystem* StatusSystem = Character->FindComponentByClass<UStatusSystem>();
|
||||
StatusSystem->AddStatusEffect(NewObject<UStatusEffect>(Character, StrengthBuffStatusEffect));
|
||||
UE_LOG(LogTemp, Display, TEXT("Damage Buffed"));
|
||||
Character->Inventory->RemoveItem(this);
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ protected:
|
||||
|
||||
virtual void Use(class ATempCharacter* Character) override;
|
||||
UPROPERTY()
|
||||
TSubclassOf<UStatusEffect> HealOverTimeStatusEffect;
|
||||
TSubclassOf<UStatusEffect> StrengthBuffStatusEffect;
|
||||
|
||||
private:
|
||||
UPROPERTY()
|
||||
|
@ -0,0 +1,17 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "StrengthBuff.h"
|
||||
|
||||
void UStrengthBuff::Invoke(AActor* Character, float TimeOfExpiry)
|
||||
{
|
||||
Super::Invoke(Character, TimeOfExpiry);
|
||||
CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||
CombatSystem->BaseDamageMultiplier += 1;
|
||||
}
|
||||
|
||||
void UStrengthBuff::OnExpiry(AActor* Character)
|
||||
{
|
||||
Super::OnExpiry(Character);
|
||||
CombatSystem->BaseDamageMultiplier -= 1;
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "../StatusEffect.h"
|
||||
#include "the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h"
|
||||
#include "StrengthBuff.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class THE_TWILIGHT_ABYSS_API UStrengthBuff : public UStatusEffect
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
virtual void Invoke(AActor* Character, float TimeOfExpiry) override;
|
||||
virtual void OnExpiry(AActor* Character) override;
|
||||
|
||||
protected:
|
||||
ATurnBaseCombatV2* CombatSystem;
|
||||
};
|
@ -115,8 +115,7 @@ void ATurnBaseCombatV2::CombatCheck(const bool bWasShot)
|
||||
{
|
||||
const UBlackboardComponent* EnemyBlackboard = Cast<AAIController>(EnemyActor->GetInstigatorController())->GetBlackboardComponent();
|
||||
|
||||
ChainDamageMultiplier = 1.0f;
|
||||
BaseDamageMultiplier = 1.0f;
|
||||
ChainDamageMultiplier = 0;
|
||||
DamageMultiplierTextBlock->SetText(FText::FromString(""));
|
||||
|
||||
const FProperty* ReactionSpeedProperty = EnemyActor->GetClass()->FindPropertyByName(FName("ReactionSpeed"));
|
||||
@ -157,6 +156,8 @@ void ATurnBaseCombatV2::EndCombat()
|
||||
bEnemyHasExtraTurn = false;
|
||||
bPlayerHasExtraTurn = false;
|
||||
bIsInCombat = false;
|
||||
BaseDamageMultiplier -= ChainDamageMultiplier;
|
||||
PreviousComboString = "";
|
||||
for (UStatusEffect* StatusEffect : StatusEffects)
|
||||
{
|
||||
StatusEffect->OnExpiry(PlayerActor);
|
||||
@ -328,12 +329,11 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo)
|
||||
(PreviousComboString == "II" || PreviousComboString == "PP" || PreviousComboString == "EE" || PreviousComboString == "AA"))
|
||||
{
|
||||
ChainDamageMultiplier += ChainDamageMultiplierIncrease;
|
||||
DamageMultiplierTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString("x"), FText::FromString(FString::SanitizeFloat(ChainDamageMultiplier))));
|
||||
DamageMultiplierTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString("x"), FText::FromString(FString::SanitizeFloat(ChainDamageMultiplier + BaseDamageMultiplier))));
|
||||
}
|
||||
else if (CurrentComboString == "EI")
|
||||
{
|
||||
BaseDamageMultiplier = ChainDamageMultiplier;
|
||||
ChainDamageMultiplier = 1;
|
||||
BaseDamageMultiplier += ChainDamageMultiplier;
|
||||
DamageMultiplierTextBlock->SetText(FText::FromString(""));
|
||||
}
|
||||
|
||||
@ -435,6 +435,11 @@ void ATurnBaseCombatV2::DamageEnemy(int Damage, const FString& DamageType)
|
||||
const FString Command = FString::Printf(TEXT("PlayDamageEnemyTextAnimation"));
|
||||
HUD->CallFunctionByNameWithArguments(*Command, AR, nullptr, true);
|
||||
AddBattleLogMessage("Enemy was damaged for " + FString::FromInt(Damage * BaseDamageMultiplier) + " HP by " + DamageType + ".");
|
||||
if (DamageMultiplierTextBlock->GetText().ToString() == "")
|
||||
{
|
||||
BaseDamageMultiplier -= ChainDamageMultiplier;
|
||||
ChainDamageMultiplier = 0;
|
||||
}
|
||||
|
||||
FProperty* IsBossProperty = FindFieldChecked<FProperty>(EnemyActor->GetClass(), "IsBoss");
|
||||
const FBoolProperty* IsBossBoolProperty = CastFieldChecked<FBoolProperty>(IsBossProperty);
|
||||
|
@ -32,7 +32,7 @@ public:
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
float BaseDefenseMultiplier = 1.0f;
|
||||
UPROPERTY()
|
||||
float ChainDamageMultiplier = 1.0f;
|
||||
float ChainDamageMultiplier = 0;
|
||||
UPROPERTY(EditAnywhere)
|
||||
float ChainDamageMultiplierIncrease = 0.2f;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user