#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "Engine/EngineTypes.h" #include "AFlyingBug.h" #include "Templates/SubclassOf.h" #include "Bomber.generated.h" class AActor; class AProjectile; class UAudioComponent; class UFXSystemAsset; class UParticleSystem; class UParticleSystemComponent; class UPrimitiveComponent; class USoundBase; UCLASS(Blueprintable) class ABomber : public AAFlyingBug { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UAudioComponent* GooSoundComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* AcidEmitterLeft; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* AcidEmitterRight; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf AcidProjectile; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UFXSystemAsset* deathParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USoundBase* deathSound; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USoundBase* DeathPanicSound; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UParticleSystem* BleedParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USoundBase* BladderDestroyedNoise; UPROPERTY(BlueprintReadWrite, EditAnywhere, Export, Transient, meta=(AllowPrivateAccess=true)) TWeakObjectPtr BleedParticlesComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Export, Transient, meta=(AllowPrivateAccess=true)) TWeakObjectPtr PanicAudioComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RagdollForceModifier; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DeathYRotationSpeed; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DeathXRotationSpeed; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float SearchRange; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float NewPointMax; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float NewPointMin; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DeathSpeed; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DeathAcceleration; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float AcidRate; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float PostDeathAcidTime; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_Death, meta=(AllowPrivateAccess=true)) bool HasDied; UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true)) bool IsRightDestroyed; UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true)) bool IsLeftDestroyed; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_DropAcid, meta=(AllowPrivateAccess=true)) bool dropAcid; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool NoDeathSpiral; public: ABomber(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; protected: UFUNCTION(BlueprintCallable) void StopSpinAndDie(); public: UFUNCTION(BlueprintCallable) void SetDropAcid(bool NewDropAcid); protected: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnStartDeathPanic(); UFUNCTION(BlueprintCallable) void OnRep_DropAcid(); UFUNCTION(BlueprintCallable) void OnRep_Death(); public: UFUNCTION(BlueprintCallable) void OnRagdollHitGround(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit); protected: UFUNCTION(BlueprintCallable) void OnBladderDamage(float Amount); UFUNCTION(BlueprintCallable) void OnArmorDestroyed(FName Name); UFUNCTION(BlueprintCallable) void HideMesh(); public: UFUNCTION(BlueprintCallable, BlueprintPure) bool GetDropAcid() const; UFUNCTION(BlueprintCallable, BlueprintPure) bool AreBladdersDestroyed() const; };