Exemple #1
0
    private bool CommonSkill(int index, bool isRaycast, bool isPlayingWhirlwind = false)
    {
        if (player.IsThrowAxe())
        {
            return(false);
        }
        if (player.IsAvoid())
        {
            return(false);
        }
        if (player.IsBuff())
        {
            return(false);
        }
        if (player.IsDash())
        {
            return(false);
        }
        if (player.IsBash())
        {
            return(false);
        }
        if (player.IsWhirlwind())
        {
            return(false);
        }
        if (UIManager.Instance.CoolTimes[index].fillAmount > 0)
        {
            return(false);
        }

        if (!player.IsWeaponEquiped)
        {
            player.EquipWeapon(true);
        }

        if (isRaycast)
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit HitInfo;

            if (Physics.Raycast(ray, out HitInfo, 100f, player.Layer))
            {
                Vector3 dest = HitInfo.point;

                player.Point.transform.position = dest;

                if (player.Point.parent)
                {
                    player.ChangeShader(player.Point.parent.GetComponentsInChildren <SkinnedMeshRenderer>(), "Custom/DissolveShader");
                    player.Point.parent = null;
                }
            }
            else
            {
                return(false);
            }
        }

        if (isPlayingWhirlwind == false)
        {
            UIManager.Instance.CoolTimes[index].fillAmount = 1;
            StartCoroutine(UIManager.Instance.SkillCoolTime(index));
        }

        return(true);
    }
    public void TakeDamage()
    {
        if (IsDead())
        {
            return;
        }

        StartCoroutine(ReDoColor());

        ChangeColor(GetComponentsInChildren <SkinnedMeshRenderer>(), new Color(0.3455882f, 0, 0));

        float Damage;

        if (player.IsWhirlwind())
        {
            Damage = Random.Range(player.MinDamage / 2, player.MaxDamage / 2);

            SoundManager.Instance.PlaySFX("Whirlwind_Explosion", 0.3f);

            Health.TakeDamage((int)Damage);
        }
        else if (player.IsBash())
        {
            Damage = Random.Range(player.MinDamage * 2, player.MaxDamage * 2);

            Health.TakeDamage((int)Damage);
        }
        else
        {
            Damage = Random.Range(player.MinDamage, player.MaxDamage);

            SoundManager.Instance.PlaySFX("BasicAttack", 0.5f);

            Health.TakeDamage((int)Damage);
        }

        MemoryPoolManager.Instance.CreateObject("Hit1", transform);

        Vector3 FontPosition;

        if (this.State.Name != "Evil Orca")
        {
            FontPosition = new Vector3(transform.position.x, this.transform.position.y + 2.0f, transform.position.z);
        }
        else
        {
            FontPosition = new Vector3(transform.position.x, this.transform.position.y + 6.0f, transform.position.z);
        }

        MemoryPoolManager.Instance.CreateTextObject("DamageFont", FontPosition, (int)Damage);

        if (Health.IsDeath())
        {
            ChangeShader(GetComponentsInChildren <SkinnedMeshRenderer>(), "Custom/DissolveShader");
            NavMesh.isStopped = true;
            SetState(CH_STATE.MS_Dead);

            stringBuilder.Length = 0;
            stringBuilder.Append(State.Name);
            stringBuilder.Append("_Death");

            SoundManager.Instance.PlaySFX(stringBuilder.ToString());
            return;
        }

        if (CHState != CH_STATE.MS_Attack && CHState != CH_STATE.MS_Attack2 && CHState != CH_STATE.MS_Attack3 && CHState != CH_STATE.MS_BigAttack)
        {
            MoveUtil.RotateToDirBurst(transform, player.transform);
        }
    }