61 lines
1.7 KiB
C++
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;
|
|
|
|
};
|