From c50d32c3bd49302740be1963b91713b43a8f633c Mon Sep 17 00:00:00 2001 From: baz Date: Sat, 16 Aug 2025 02:17:31 +0100 Subject: [PATCH] Add random pickups --- Content/Enemy/DA_Enemy.uasset | 4 ++-- Content/Materials/M_EXPGlow.uasset | 3 --- Content/Materials/M_EXPGlowBlue.uasset | 3 +++ Content/Materials/M_EXPGlowGreen.uasset | 3 +++ Content/Materials/M_EXPGlowRed.uasset | 3 +++ Content/Meshes/SM_EXP.uasset | 3 --- Content/Meshes/SM_EXPBlue.uasset | 3 +++ Content/Meshes/SM_EXPGreen.uasset | 3 +++ Content/Meshes/SM_EXPRed.uasset | 3 +++ Content/Pickups/EXP/DA_BlueEXPPickup.uasset | 4 ++-- Content/Pickups/EXP/DA_GreenEXPPickup.uasset | 3 +++ Content/Pickups/EXP/DA_RedEXPPickup.uasset | 3 +++ Source/vampires/EnemyCharacter.cpp | 24 ++++++++++++++++---- Source/vampires/EnemyCharacter.h | 2 +- Source/vampires/EnemyDataAsset.h | 8 ++++++- 15 files changed, 56 insertions(+), 16 deletions(-) delete mode 100644 Content/Materials/M_EXPGlow.uasset create mode 100644 Content/Materials/M_EXPGlowBlue.uasset create mode 100644 Content/Materials/M_EXPGlowGreen.uasset create mode 100644 Content/Materials/M_EXPGlowRed.uasset delete mode 100644 Content/Meshes/SM_EXP.uasset create mode 100644 Content/Meshes/SM_EXPBlue.uasset create mode 100644 Content/Meshes/SM_EXPGreen.uasset create mode 100644 Content/Meshes/SM_EXPRed.uasset create mode 100644 Content/Pickups/EXP/DA_GreenEXPPickup.uasset create mode 100644 Content/Pickups/EXP/DA_RedEXPPickup.uasset diff --git a/Content/Enemy/DA_Enemy.uasset b/Content/Enemy/DA_Enemy.uasset index 6249717..623bf85 100644 --- a/Content/Enemy/DA_Enemy.uasset +++ b/Content/Enemy/DA_Enemy.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4b7ebb97dcd575efe7aaa188da0100b038d199222d90a177a74372870ea66c7 -size 2659 +oid sha256:0652bd90b65a44a8045e8b0d213dc8ffa5b0dd48fa5fc14796f5da45ad66153e +size 2877 diff --git a/Content/Materials/M_EXPGlow.uasset b/Content/Materials/M_EXPGlow.uasset deleted file mode 100644 index 4811543..0000000 --- a/Content/Materials/M_EXPGlow.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:54edcf2362363a49a5d1704bb15aac1197cab672bcd620edeb409915354031e8 -size 13344 diff --git a/Content/Materials/M_EXPGlowBlue.uasset b/Content/Materials/M_EXPGlowBlue.uasset new file mode 100644 index 0000000..e395b56 --- /dev/null +++ b/Content/Materials/M_EXPGlowBlue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90ff16ae8231f784cc5bef8844a2fe86e2f9bb81085b281525c713864179eecb +size 13855 diff --git a/Content/Materials/M_EXPGlowGreen.uasset b/Content/Materials/M_EXPGlowGreen.uasset new file mode 100644 index 0000000..23fbf6b --- /dev/null +++ b/Content/Materials/M_EXPGlowGreen.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af61ef88ad789e5892ebe7a582d085a7463625c54f70a1bf714c46e0a37a811f +size 13851 diff --git a/Content/Materials/M_EXPGlowRed.uasset b/Content/Materials/M_EXPGlowRed.uasset new file mode 100644 index 0000000..323c689 --- /dev/null +++ b/Content/Materials/M_EXPGlowRed.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2d8b48d26f18a7998082e633ac9c0a1a0e1b5cf1696d05b5b7299a0e7a818d8 +size 13473 diff --git a/Content/Meshes/SM_EXP.uasset b/Content/Meshes/SM_EXP.uasset deleted file mode 100644 index faefeb5..0000000 --- a/Content/Meshes/SM_EXP.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f2a3c031dab74d3afc8e950372fb2c2d21c7aa8724b92302fd4c22b66dd5c590 -size 21316 diff --git a/Content/Meshes/SM_EXPBlue.uasset b/Content/Meshes/SM_EXPBlue.uasset new file mode 100644 index 0000000..93f540f --- /dev/null +++ b/Content/Meshes/SM_EXPBlue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa34ad88f5419bd8a7b3a1f434ff2693d8e7b8b0e4912ae455eeebd4205e9719 +size 21732 diff --git a/Content/Meshes/SM_EXPGreen.uasset b/Content/Meshes/SM_EXPGreen.uasset new file mode 100644 index 0000000..91ef543 --- /dev/null +++ b/Content/Meshes/SM_EXPGreen.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48c1980d6e1a524565c9c47940942affbfcd6c2634d9124a4713e1b501d02486 +size 21746 diff --git a/Content/Meshes/SM_EXPRed.uasset b/Content/Meshes/SM_EXPRed.uasset new file mode 100644 index 0000000..3b08834 --- /dev/null +++ b/Content/Meshes/SM_EXPRed.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b6f1e0d9e3ee4e6d007defaf9a89a4a2ed8157cb764acb712932462af8455d0 +size 21468 diff --git a/Content/Pickups/EXP/DA_BlueEXPPickup.uasset b/Content/Pickups/EXP/DA_BlueEXPPickup.uasset index e25c1d7..b5c8c6d 100644 --- a/Content/Pickups/EXP/DA_BlueEXPPickup.uasset +++ b/Content/Pickups/EXP/DA_BlueEXPPickup.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d91fe96c1fd87dde550ddc5df968f21da221d2789598d4d3ea677f264697d92 -size 2020 +oid sha256:aea1e9bfd421d30d7f9f34e181bb717382e78274e2ac10042be42e2da47b8321 +size 1875 diff --git a/Content/Pickups/EXP/DA_GreenEXPPickup.uasset b/Content/Pickups/EXP/DA_GreenEXPPickup.uasset new file mode 100644 index 0000000..c32b224 --- /dev/null +++ b/Content/Pickups/EXP/DA_GreenEXPPickup.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f9d68a4f50a58cdbae0f1b643823dff7350830416a2479358c86471760a45ad +size 1813 diff --git a/Content/Pickups/EXP/DA_RedEXPPickup.uasset b/Content/Pickups/EXP/DA_RedEXPPickup.uasset new file mode 100644 index 0000000..526b9cc --- /dev/null +++ b/Content/Pickups/EXP/DA_RedEXPPickup.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45731b0453a0a78d728e0c90c68a77c82599774707f295a0553adbc504ea29f6 +size 1868 diff --git a/Source/vampires/EnemyCharacter.cpp b/Source/vampires/EnemyCharacter.cpp index e916d38..5ef263f 100644 --- a/Source/vampires/EnemyCharacter.cpp +++ b/Source/vampires/EnemyCharacter.cpp @@ -62,7 +62,7 @@ void AEnemyCharacter::OnDamaged(FDamageInfo DamageInfo) void AEnemyCharacter::OnDeath(FDamageInfo DamageInfo) { - if (PickupTemplate) + if (PickupArray.Num() > 0) { AGameModeBase* Gamemode = UGameplayStatics::GetGameMode(GetWorld()); if (UKismetSystemLibrary::DoesImplementInterface(Gamemode, UPools::StaticClass())) @@ -75,7 +75,20 @@ void AEnemyCharacter::OnDeath(FDamageInfo DamageInfo) { FVector PickupLocation = GetActorLocation(); Pickup->SetActorLocation(PickupLocation); - IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupTemplate, PickupLocation); + + int32 Rand = FMath::Rand() % 100; + if (Rand < 60 && PickupArray[0]) + { + IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupArray[0], PickupLocation); + } + else if (Rand < 90 && PickupArray[1]) + { + IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupArray[1], PickupLocation); + } + else if (PickupArray[2]) + { + IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupArray[2], PickupLocation); + } } } } @@ -98,11 +111,14 @@ void AEnemyCharacter::LoadDataFromDataAsset_Implementation(UEnemyDataAsset* Enem { StaticMeshComponent->SetStaticMesh(EnemyDataAsset->StaticMesh); BehaviorTree = EnemyDataAsset->BehaviorTree; - PickupTemplate = EnemyDataAsset->PickupDataAsset; OnDamagedSound = EnemyDataAsset->OnDamagedSoundBase; OnDeathSound = EnemyDataAsset->OnDeathSoundBase; OnDamagedNiagaraSystem = EnemyDataAsset->OnDamagedNiagaraSystem; OnDeathNiagaraSystem = EnemyDataAsset->OnDeathNiagaraSystem; + + PickupArray.Add(EnemyDataAsset->CommonPickupDataAsset); + PickupArray.Add(EnemyDataAsset->UncommonPickupDataAsset); + PickupArray.Add(EnemyDataAsset->RarePickupDataAsset); } } @@ -110,7 +126,7 @@ void AEnemyCharacter::ResetData_Implementation() { StaticMeshComponent->SetStaticMesh(nullptr); BehaviorTree = nullptr; - PickupTemplate = nullptr; + PickupArray.Empty(); OnDamagedSound = nullptr; OnDeathSound = nullptr; OnDamagedNiagaraSystem = nullptr; diff --git a/Source/vampires/EnemyCharacter.h b/Source/vampires/EnemyCharacter.h index 2c64dd0..2cb9c07 100644 --- a/Source/vampires/EnemyCharacter.h +++ b/Source/vampires/EnemyCharacter.h @@ -42,7 +42,7 @@ private: TObjectPtr ObjectPoolComponent = nullptr; UPROPERTY() - TObjectPtr PickupTemplate = nullptr; + TArray> PickupArray; TArray> Player; diff --git a/Source/vampires/EnemyDataAsset.h b/Source/vampires/EnemyDataAsset.h index 59ed299..6ab9635 100644 --- a/Source/vampires/EnemyDataAsset.h +++ b/Source/vampires/EnemyDataAsset.h @@ -26,7 +26,13 @@ public: TObjectPtr BehaviorTree = nullptr; UPROPERTY(EditDefaultsOnly) - TObjectPtr PickupDataAsset = nullptr; + TObjectPtr CommonPickupDataAsset = nullptr; + + UPROPERTY(EditDefaultsOnly) + TObjectPtr UncommonPickupDataAsset = nullptr; + + UPROPERTY(EditDefaultsOnly) + TObjectPtr RarePickupDataAsset = nullptr; UPROPERTY(EditDefaultsOnly) TObjectPtr OnDamagedSoundBase = nullptr;