Exemplo n.º 1
0
    public override Attack_Result TakeDamage(int dmg, Vector3 attackDir, Damagetype dmgtype)
    {
        if (InDash())
        {
            return(Attack_Result.inmune);
        }

        if (charBlock.IsParry(rot.position, attackDir, rot.forward))
        {
            Debug.LogWarning("PARRY perfect");
            PerfectParry();
            Main.instance.GetTimeManager().DoSlowMotion(timeScale, slowDuration);
            customCam.DoFastZoom(10);
            return(Attack_Result.parried);
        }
        else if (charBlock.IsBlock(rot.position, attackDir, rot.forward))
        {
            blockParticle.Play();
            charanim.BlockSomething();
            charBlock.SetBlockCharges(-1);
            lifesystem.Hit(dmg / 2);
            return(Attack_Result.blocked);
        }
        else
        {
            hitParticle.Play();
            lifesystem.Hit(dmg);
            Vector3 dir = (transform.position - attackDir).normalized;
            rb.AddForce(new Vector3(dir.x, 0, dir.z) * dmg * onHitRecall, ForceMode.Force);
            customCam.BeginShakeCamera();
            Main.instance.Vibrate();
            return(Attack_Result.sucessful);
        }
    }