Exemple #1
0
        protected virtual IEnumerator DoMeleeDamage(List <IHealthable> targetStats)
        {
            yield return(new WaitForSeconds(curMAttackDelay / commonCombatSpeedMultiplier));

            for (int i = 0; i < targetStats.Count; i++)
            {
                if (!InMeleeZone(targetStats[i].GetTransform()))
                {
                    continue;
                }


                if (!stats.IsDead())
                {
                    targetStats[i].TakeDamage(stats.GetDamageValue(true, true, curMAttackDamageMultiplier));
                }
            }

            successAttackInRow++;

            if (successAttackInRow == maxSuccessAttackInRow)
            {
                successAttackInRow = 0;
            }

            OnAttackEnd?.Invoke();
        }
Exemple #2
0
    ///<summary>
    /// Changing enemyacter state by detecting what kind of layer it touches
    ///</summary>
    protected virtual void ChangeState(EnemyState state)
    {
        if (enemyState == state || IsDead())
        {
            return;
        }

        if (IsAttacking())
        {
            OnAttackEnd.Invoke();
        }

        if (IsPatrolling())
        {
            OnPatrolEnd.Invoke();
        }

        if (IsChasing())
        {
            OnChaseEnd.Invoke();
        }

        if (IsIdling())
        {
            OnIdleEnd.Invoke();
        }
        // set new state
        var prevState = enemyState;

        enemyState = state;

        if (!IsAttacking())
        {
            m_General.canFlip = true;
        }

        if (IsAttacking())
        {
            OnAttack.Invoke();
        }

        if (IsPatrolling())
        {
            OnPatrol.Invoke();
        }

        if (IsChasing())
        {
            OnChase.Invoke();
        }

        if (IsIdling())
        {
            OnIdle.Invoke();
        }

        OnMotorStateChanged.Invoke(prevState, enemyState);
    }
Exemple #3
0
 static int SetRoleAttackEndCallBack(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         CBattleRole obj  = (CBattleRole)ToLua.CheckObject <CBattleRole>(L, 1);
         OnAttackEnd arg0 = (OnAttackEnd)ToLua.CheckDelegate <OnAttackEnd>(L, 2);
         obj.SetRoleAttackEndCallBack(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Exemple #4
0
 public void OnAttackEndNotify()
 {
     OnAttackEnd?.Invoke(this, EventArgs.Empty);
 }
Exemple #5
0
 public void AddListener(OnAttackEnd onAttackEnd)
 {
     this._onEnd = onAttackEnd;
 }
 /// <summary>
 /// Invoke the end of an attack with the current equipped weapon
 /// </summary>
 /// <param name="weapon">Current weapon</param>
 public void InvokeAttackEnd(Weapon weapon) => OnAttackEnd?.Invoke(weapon);
Exemple #7
0
 public void AttackEnd()
 {
     OnAttackEnd?.Invoke();
 }