222 lines
8.4 KiB
C++
Executable file
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);
|
|
|
|
};
|
|
|