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(); }
///<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); }
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)); } }
public void OnAttackEndNotify() { OnAttackEnd?.Invoke(this, EventArgs.Empty); }
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);
public void AttackEnd() { OnAttackEnd?.Invoke(); }