#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "Engine/NetSerialization.h" #include "AmmoDrivenWeapon.h" #include "LensActivedDelegateDelegate.h" #include "LensDeactivedDelegateDelegate.h" #include "MicrowaveLense.h" #include "MultiHitScanHits.h" #include "MultiHitscanHit.h" #include "Templates/SubclassOf.h" #include "MicrowaveWeapon.generated.h" class AActor; class ABoil; class UCapsuleHitscanComponent; class UDamageComponent; class UEnemyTemperatureComponent; class UFSDPhysicalMaterial; class UFirstPersonNiagaraComponent; class UHealthComponentBase; class UNiagaraComponent; class UNiagaraSystem; class UParticleSystem; class UPrimitiveComponent; class USoundCue; class UStatusEffect; UCLASS(Blueprintable) class FSD_API AMicrowaveWeapon : public AAmmoDrivenWeapon { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UDamageComponent* DamageComp; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UCapsuleHitscanComponent* CapsuleHitscanComp; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UFirstPersonNiagaraComponent* FP_MuzzleParticle; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UNiagaraComponent* TP_MuzzleParticle; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UDamageComponent* ExplodingTargetsDamageComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UDamageComponent* RadiantSuperheaterHeat; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UDamageComponent* RadiantSuperheaterFrostShock; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FLensActivedDelegate OnLenseActivated; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FLensDeactivedDelegate OnLenseDeactivated; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float SwitchTime; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf GammaContaminationSTE; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf GammaContaminationZoneSTE; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float GammaContaminationRange; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf ExplodableBlisterClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float BlisteringNecrosisChance; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float MinTimeBetweenBlisteringNecrosis; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf FireEffect; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TArray> NeuroEffects; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf NeuroToSpread; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf SlowEffect; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UNiagaraSystem* ImpactParticleEnemies; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UNiagaraSystem* ImpactParticleTerrain; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UNiagaraSystem* NeuroSpreadParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UParticleSystem* P_NeuroSpreadParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USoundCue* NeuroSpreadSound; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UNiagaraSystem* MicrowaveMuzzle; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UNiagaraComponent* MuzzleComp; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TSet ActorsInCapsule; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float WeaponRange; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ShotWidth; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DamageInterval; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) float KilledTargetsExplosionChance; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UNiagaraSystem* ExplosionOCSystem; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float NeuroSpreadRadius; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FMicrowaveLense WideLense; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FMicrowaveLense FocusLense; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float TemperatureAmplification; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool RadiantSuperheaterActive; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RadiantSuperheaterFrostShockChance; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RadiantSuperheaterHeatShockChance; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RadiantSuperheaterMinColdDamage; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RadiantSuperheaterMinHeatDamage; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RadiantSuperheaterFrostTransferFactor; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RadiantSuperheaterHeatTransferFactor; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ColdTempAmpMultiplier; UPROPERTY(BlueprintReadWrite, EditAnywhere, Export, Transient, meta=(AllowPrivateAccess=true)) TWeakObjectPtr RadiantSuperheaterTarget; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool SlowOnHit; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf HeatSink; public: AMicrowaveWeapon(); UFUNCTION(BlueprintCallable) void UpdateMuzzleAnim(bool InIsFiring); protected: UFUNCTION(BlueprintCallable) void SpawnExplosiveBoil(UPrimitiveComponent* Target, const FMultiHitscanHit& Hit); UFUNCTION(BlueprintCallable, Server, Unreliable) void ShowBoilerRayExplosion_Server(FVector_NetQuantize Location, FRotator Rotation); UFUNCTION(BlueprintCallable, NetMulticast, Unreliable) void ShowBoilerRayExplosion(FVector_NetQuantize Location, FRotator Rotation); UFUNCTION(BlueprintCallable, Reliable, Server) void Server_SetLensePower(float lensepower); UFUNCTION(BlueprintCallable) void OnTargetKilled(AActor* Target, UFSDPhysicalMaterial* PhysMat, bool wasDirectHit); UFUNCTION(BlueprintCallable) void OnShowHitEffect(const FVector& ImpactPoint, const FVector& ImpactNormal, bool hitEnemy); UFUNCTION(BlueprintCallable) void OnServerHitscanHit(const FMultiHitScanHits& Hits); UFUNCTION(BlueprintCallable) void OnRadiantSuperHeaterAoe(); UFUNCTION(BlueprintCallable) void OnPushedDamageEffect(UHealthComponentBase* healthComp); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void HeatUpdated(float SmoothedTemperature); UFUNCTION(BlueprintCallable) void EndCharacterOverheatAnim(); UFUNCTION(BlueprintCallable, NetMulticast, Unreliable) void All_ShowNeuroSpread(const FVector& Location); };