void Start()
    {
        OnDeath.AddListener(Death);

        if (enemySettings.mobType == MobType.Patroller)
        {
            agent.destination = patrolPoints[0];
            agent.SearchPath();
        }
    }
Exemple #2
0
    protected override void Start()
    {
        base.Start();

        // Add turn aggressive listeners
        TurnAggressive.AddListener(() => {
            TurnAggressiveWrapper(false);
        });
        TurnAggressiveHyperseed.AddListener(() => {
            TurnAggressiveWrapper(true);
        });
        // Aggro enemies when damage is taken & play damaged SFX
        OnTakeDamage.AddListener(() => {
            // If enemy damaged sound is playing, don't repeat
            if (EnemySoundSingleton.instance.DamageTakenSoundActive == false)
            {
                EnemySoundSingleton.instance.DamageTakenSoundActive = true;
                _enemyFX.DamageTaken.Invoke();
            }
            // Aggro group
            GetComponentInParent <EnemyGroup>()?.OnEnemyDamage.Invoke();
        });
        // Death Event
        OnDeath.AddListener(() => {
            if (currentBehavior != null)
            {
                StopCoroutine(currentBehavior);
            }
            currentBehavior = StartCoroutine(Die());
        });

        spawnPosition = transform.position;

        // Start behavior
        if (currentState == EnemyState.Aggressive)
        {
            currentBehavior = StartCoroutine(Idle());
            TurnAggressive.Invoke();
        }
        else
        {
            currentBehavior = StartCoroutine(Idle());
        }

        StartCoroutine(CheckBehavior());
        StartCoroutine(EnemyModifications());
    }
Exemple #3
0
 void Start()
 {
     OnDamageTaken.AddListener(FlashRed);
     OnDamageTaken.AddListener((health) => GameManager.LevelingSystem.AddXP(20));
     OnDeath.AddListener(() => GameManager.LevelingSystem.AddXP(100));
 }