Example #1
0
    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();
    }
Example #2
0
    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);
    }
Example #3
0
    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();
        }
    }