示例#1
0
 /// <summary>
 /// 魔法、物理攻撃10%カット
 /// </summary>
 /// <param name="target">Target.</param>
 /// <param name="time">効果時間.</param>
 override public void Skill4(GameObject target = null, float effectTime = 0)
 {
     if (target != null)
     {
         JobBase jb = target.GetComponent <JobBase>();
         jb.Set_c_Status(ConditionStatus.ALL_DAMAGE_DOWN);
     }
 }
示例#2
0
    /// <summary>
    /// ハーガル
    /// スロウ状態にする
    /// </summary>
    /// <param name="target">Target.</param>
    /// <param name="time">効果時間.</param>
    override public void Skill3(GameObject target = null, float effectTime = 0)
    {
        JobBase jb = _target.GetComponent <JobBase> ();

        this.GetComponentInChildren <Animator>().SetTrigger("isAttack");
        StartCoroutine(Damage(target, skillList [2], 1));
        jb.Set_c_Status(ConditionStatus.SLOW);
        jb.StartCoroutine(jb.StatusCounter(ConditionStatus.SLOW, effectTime));
    }
示例#3
0
    /// <summary>
    /// 異常状態を与える
    /// </summary>
    /// <param name="target">Target</param>
    /// <param name="sc">Skill Script</param>
    /// <param name="a_time">エフェクトを出す時間</param>
    /// <param name="effect">エフェクトのpath</param>
    /// <param name="e_time"> 異常状態を与える時間</param>
    /// <param name="status_array"> 異常状態の配列</param>
    /// <returns></returns>
    public IEnumerator StatusMagic(GameObject target, SkillScript sc, float a_time, string effect, float e_time, ConditionStatus[] status_array)
    {
        if (sc.s_targetNum == TargetNum.MUTIPLE)
        {
            CreateRange();
            GameObject.FindGameObjectWithTag("Range").GetComponent <SphereCollider>().radius = sc.s_range;
        }
        float timer    = 0;
        bool  useMagic = false;

        while (true)
        {
            timer += Time.deltaTime;
            if (timer >= a_time && !useMagic)
            {
                GameObject effectObj = Instantiate(Resources.Load(effect), target.transform.position, Quaternion.identity) as GameObject;
                effectObj.transform.parent = this.transform;
                useMagic = true;
            }
            if (timer >= e_time)
            {
                try
                {
                    if (sc.s_targetNum == TargetNum.MUTIPLE)
                    {
                        foreach (var r_target in GameObject.FindGameObjectWithTag("Range").GetComponent <RangeDetect>().targets)
                        {
                            // TODO: Player / Enemy を判断できるように
                            if (r_target.layer != LayerMask.NameToLayer("Player"))
                            {
                                continue;
                            }
                            JobBase jb = r_target.GetComponent <JobBase>();
                            foreach (var status in status_array)
                            {
                                jb.Set_c_Status(status);
                                jb.StartCoroutine(jb.StatusCounter(status, sc.s_effectTime));
                            }
                        }
                    }
                    else
                    {
                        if (target.layer == LayerMask.NameToLayer("Player"))
                        {
                            JobBase jb = target.GetComponent <JobBase>();
                            foreach (var status in status_array)
                            {
                                jb.Set_c_Status(status);
                                jb.StartCoroutine(jb.StatusCounter(status, sc.s_effectTime));
                            }
                        }
                    }
                    if (GameObject.FindGameObjectWithTag("Range"))
                    {
                        DeleteRange();
                    }
                    StartCoroutine(SkillRecast(sc.gameObject, sc.s_recast));
                    yield break;
                }
                catch (MissingReferenceException)
                {
                    yield break;
                }
            }
            yield return(new WaitForEndOfFrame());
        }
    }