From 4f336263fbe035dcb2a37c882e4ba1d0d2bce404 Mon Sep 17 00:00:00 2001 From: PHILIP White Date: Wed, 26 Apr 2023 06:21:08 +0100 Subject: [PATCH] Bugfix Enemy Always Started First --- Content/BlueprintAI/AI/AIBruh.uasset | 4 ++-- .../TurnBasedCombatV2/HoldToInitCombat.cpp | 2 +- .../TurnBasedCombatV2/TurnBaseCombatV2.cpp | 19 +++++++++++-------- .../TurnBasedCombatV2/TurnBaseCombatV2.h | 4 ++-- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Content/BlueprintAI/AI/AIBruh.uasset b/Content/BlueprintAI/AI/AIBruh.uasset index 427fe28..f599c59 100644 --- a/Content/BlueprintAI/AI/AIBruh.uasset +++ b/Content/BlueprintAI/AI/AIBruh.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:300e621b880bc7c6a608256b218af1095b93829767a940cfe574e2e0814c81f4 -size 90153 +oid sha256:1a5b12edd0d92e0740ce9b6cba738992d981e85247c6779896ab36d7ba46dbb7 +size 90680 diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp index a699be0..513d062 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp @@ -76,7 +76,7 @@ void UHoldToInitCombat::OnClickDown() EnemyBlackboard = Cast(TargetEnemy->GetInstigatorController())->GetBlackboardComponent(); if (!EnemyBlackboard->GetValueAsBool("WasInCombat")) { - Cast(GetWorld()->GetGameState())->StartCombat(TargetEnemy); + Cast(GetWorld()->GetGameState())->StartCombat(TargetEnemy, true); return; } InitCombatWidget->SetVisibility(ESlateVisibility::Hidden); diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp index 9609c99..eec5d2c 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp @@ -32,7 +32,7 @@ ATurnBaseCombatV2::ATurnBaseCombatV2() } } -void ATurnBaseCombatV2::StartCombat(AActor* Enemy) +void ATurnBaseCombatV2::StartCombat(AActor* Enemy, bool bWasShot) { if (Enemy == nullptr) return; EnemyActor = Enemy; @@ -42,7 +42,7 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy) EscapePercentageTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString(FString::FromInt(EscapePercentage * 100)), FText::FromString("%"))); bIsInCombat = true; UBlackboardComponent* EnemyBlackboard = Cast(Enemy->GetInstigatorController())->GetBlackboardComponent(); - + //Disable Character Movement APlayerController* PlayerController = GetWorld()->GetFirstPlayerController(); PlayerController->SetIgnoreMoveInput(true); @@ -61,7 +61,7 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy) FProperty* HealthProperty = Enemy->GetClass()->FindPropertyByName(FName("Health")); int32* EnemyHealthPtr = HealthProperty->ContainerPtrToValuePtr(Enemy); EnemyHealth = EnemyHealthPtr; - + if (IsValid(CombatTutorialWidgetInstance) && CombatTutorialWidgetInstance->IsInViewport()) return; if (!HasSeenTutorial) { @@ -71,11 +71,11 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy) return; } - CombatCheck(); + CombatCheck(bWasShot); //DrawDebugPoint(GetWorld(), Enemy->GetActorLocation(), 10, FColor::Red, false, 10); } -void ATurnBaseCombatV2::CombatCheck() +void ATurnBaseCombatV2::CombatCheck(bool bWasShot) { const UBlackboardComponent* EnemyBlackboard = Cast(EnemyActor->GetInstigatorController())->GetBlackboardComponent(); @@ -84,7 +84,7 @@ void ATurnBaseCombatV2::CombatCheck() EisResource = 10; AzosResource = 10; IroquoidResource = 10; - + CurrentComboString = ""; UpdateComboString(CurrentComboString); RevertActionPoints(); @@ -93,15 +93,18 @@ void ATurnBaseCombatV2::CombatCheck() ClearBattleLog(); EnableButtons(); - if (EnemyBlackboard->GetValueAsBool("Sight")) + FProperty* ReactionSpeedProperty = EnemyActor->GetClass()->FindPropertyByName(FName("ReactionSpeed")); + float* EnemyReactionSpeedPtr = ReactionSpeedProperty->ContainerPtrToValuePtr(EnemyActor); + if (EnemyBlackboard->GetValueAsBool("Sight") && !bWasShot) { //bEnemyHasExtraTurn = true; SwitchTurn(); } - else + else if (Cast(PlayerActor)->ReactionSpeed > *EnemyReactionSpeedPtr && bWasShot) { bPlayerHasExtraTurn = true; } + TurnIndicatorTextBlock->SetText(FText::FromString("Player Turn")); } void ATurnBaseCombatV2::EndCombat() diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h index 9bd7367..bf780b0 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h @@ -97,9 +97,9 @@ public: FString BattleLog; UFUNCTION(BlueprintCallable) - void StartCombat(AActor* Enemy); + void StartCombat(AActor* Enemy, bool bWasShot = false); UFUNCTION(BlueprintCallable) - void CombatCheck(); + void CombatCheck(bool bWasShot = false); UFUNCTION(BlueprintCallable) void EndCombat();