public void PlayerBlocked() { BlockState = Armor.BlockState.Blocking; blockTimer.Start(MaxBlockDuration, () => { BlockState = Armor.BlockState.None; OnBlockEnd.Invoke(); }, null); if (EnemyDisplay.EnemyState == EnemyDisplay.State.BeforeAttack) { BlockState = Armor.BlockState.PerfectlyBlocking; } OnBlockStart.Invoke(); }
public void OnEnemyHitPlayer(int damage) { float fdamage = Player.Armor.Value.GetDamage(damage, BlockState); if (BlockState == Armor.BlockState.Blocking || BlockState == Armor.BlockState.PerfectlyBlocking) { if (BlockState == Armor.BlockState.PerfectlyBlocking) { OnPerfectBlock.Invoke(); } blockTimer.Stop(); OnBlockEnd.Invoke(); BlockState = Armor.BlockState.None; } damage = Mathf.RoundToInt(fdamage); Player.DamagePlayer(damage); PlayerDamageNumberSpawner.SpawnNumber(damage, DamageColor); }
public void PlayerParried() { bool success = EnemyDisplay.EnemyState == EnemyDisplay.State.ExecuteAttack; if (!success) { BlockState = Armor.BlockState.BadParry; OnFailedParry.Invoke(); Timer.StartTimer(FailedParryStunTime, () => { OnFailedParryDone.Invoke(); BlockState = Armor.BlockState.None; }, this); } else { EnemyDisplay.Stun(); OnSuccessfulParry.Invoke(); } }