haxis/Source/UnrealProject/Creatures/EnemyBase.h

61 lines
1.7 KiB
C++

// Project Lab - NHTV Igad
#pragma once
#include "Creatures/NPCBase.h"
#include "EnemyBase.generated.h"
/**
*
*/
UCLASS()
class UNREALPROJECT_API AEnemyBase : public ANPCBase
{
GENERATED_BODY()
public:
AEnemyBase();
virtual void BeginPlay() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
virtual void Tick(float deltaTime) override;
virtual int32 NativeDealDamage(class ANetworkCharacter* dealer, int32 damage, float armorPercentageIgnore, class UAbilityInfo* ability) override;
void OffensiveBehavior();
void RangedBehavior();
void ChargeBehavior();
void InformGeneral();
void SwitchAgro();
void ConfusionBehavior();
void ResetConfusionTimer(float confusionTime);
UPROPERTY(EditAnywhere, Category = Behavior)
class UBehaviorTree* treeBehavior;
UPROPERTY(EditAnywhere, Category = "Attack Settings")
float informGeneralTime;
UPROPERTY(EditAnywhere, Category = "Ability Settings")
class UAbilityInfo* specialAbility;
UPROPERTY(EditAnywhere, Category = "Ability Settings")
class UAbilityInfo* meleeAbility;
UPROPERTY(EditAnywhere, Category = "Ability Settings")
class UAbilityInfo* rangedAbility;
UPROPERTY(EditAnywhere, Category = "Ability Settings")
float specialAbilityChance;
FVector scatterLocation;
bool hasGeneral;
bool finnishedAttack;
bool hasSpawned;
UPROPERTY()
class AEnemyAIController* enemycontroller;
UPROPERTY()
class AGeneralEnemy* general;
UPROPERTY()
ANetworkCharacter* m_tempTarget;
protected:
float m_ReCalcChance(float chance);
bool m_rotateToPlayer;
float m_lastPercentage;
class UAbilityInfo* m_tempAbility;
float m_informGeneralTimer;
float m_confusionTimer;
};