DRG-Femboy-Voice/Source/FSD/Public/MicrowaveWeapon.h
2025-04-15 12:39:31 -07:00

222 lines
8.4 KiB
C++
Executable file

#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<UStatusEffect> GammaContaminationSTE;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<UStatusEffect> GammaContaminationZoneSTE;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float GammaContaminationRange;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<ABoil> ExplodableBlisterClass;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float BlisteringNecrosisChance;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float MinTimeBetweenBlisteringNecrosis;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<UStatusEffect> FireEffect;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TArray<TSubclassOf<UStatusEffect>> NeuroEffects;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<UStatusEffect> NeuroToSpread;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<UStatusEffect> 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<AActor*> 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<UEnemyTemperatureComponent> RadiantSuperheaterTarget;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool SlowOnHit;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<AActor> 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);
};