58 lines
2.0 KiB
C#
58 lines
2.0 KiB
C#
using Code.Configs;
|
|
using Reflex.Attributes;
|
|
using UnityEngine;
|
|
using UnityEngine.AI;
|
|
|
|
namespace Code.Gameplay.Enemies
|
|
{
|
|
public class DrunkenGrandpa : BaseEnemy
|
|
{
|
|
[Inject]
|
|
private void Construct(DrunkenGrandpaConfig drunkenGrandpaConfig)
|
|
{
|
|
Damage = drunkenGrandpaConfig.damage;
|
|
AttackCooldown = drunkenGrandpaConfig.attackCooldown;
|
|
|
|
DetectionRange = drunkenGrandpaConfig.detectionRange;
|
|
AttackRange = drunkenGrandpaConfig.attackRange;
|
|
|
|
Speed = drunkenGrandpaConfig.speed;
|
|
|
|
IsStunnable = drunkenGrandpaConfig.isStunnable;
|
|
StunDuration = drunkenGrandpaConfig.stunDuration;
|
|
|
|
UsesIdleMovement = drunkenGrandpaConfig.usesIdleMovement;
|
|
IdleWanderRadius = drunkenGrandpaConfig.idleWanderRadius;
|
|
IdleMoveDurationMin = drunkenGrandpaConfig.idleMoveDurationMin;
|
|
IdleMoveDurationMax = drunkenGrandpaConfig.idleMoveDurationMax;
|
|
IdleMoveDurationMin = drunkenGrandpaConfig.idleMoveDurationMin;
|
|
IdleMoveDurationMax = drunkenGrandpaConfig.idleMoveDurationMax;
|
|
IdlePauseDurationMin = drunkenGrandpaConfig.idlePauseDurationMin;
|
|
IdlePauseDurationMax = drunkenGrandpaConfig.idlePauseDurationMax;
|
|
}
|
|
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
|
|
if (agent == null) return;
|
|
|
|
var walkableArea = NavMesh.GetAreaFromName("Walkable");
|
|
agent.areaMask = 1 << walkableArea;
|
|
}
|
|
|
|
protected override void HandleAttack()
|
|
{
|
|
if (!Player) return;
|
|
|
|
var distance = Vector3.Distance(transform.position, Player.transform.position);
|
|
|
|
if (!(distance <= AttackRange)) return;
|
|
|
|
if (Player.CustomCharacterController.IsSliding)
|
|
ApplyStun();
|
|
else
|
|
DealDamage();
|
|
}
|
|
}
|
|
} |