Esempio n. 1
0
    /// <summary>
    /// ターゲットへのダメージを計算する
    /// </summary>
    /// <param name="target">ターゲット</param>
    /// <param name="power">スキルのパワー</param>
    /// <param name="buff">妖精の力</param>
    private void Target_Damage(GameObject target, float power, float buff)
    {
        JobBase jb     = target.GetComponent <JobBase>();
        int     damage = Math.Max((int)((_attack + power) * buff) - jb._defence, 0);

        if (jb.CheckFlag(ConditionStatus.ALL_DAMAGE_DOWN_20))
        {
            damage = damage * 80 / 100;
        }
        else if (jb.CheckFlag(ConditionStatus.ALL_DAMAGE_DOWN))
        {
            damage = damage * 90 / 100;
        }
        jb.Set_HP(damage);
        target.GetComponentInChildren <Animator>().SetTrigger("Damage");
        Vector3 pos = target.transform.position;

        pos.y += target.GetComponent <CapsuleCollider>().height;
        GameObject effectObj = Instantiate(Resources.Load("Prefabs/Magic/Hit_Effect"), pos, Quaternion.identity) as GameObject;
    }
Esempio n. 2
0
 override public void Excute(EnemyBase eb = null)
 {
     if (eb.CanTakeAction())
     {
         List <GameObject> targetCount = new List <GameObject>();
         foreach (var target in eb.e_pr.partyList)
         {
             JobBase jb = target.GetComponent <JobBase>();
             if ((jb._type == JobType.Attacker || jb._type == JobType.Magician) && jb.battelStatus != BattelStatus.DEAD)
             {
                 targetCount.Add(target);
             }
         }
         if (targetCount.Count > 0)
         {
             int     ran = Random.Range(0, targetCount.Count);
             JobBase jb  = targetCount[ran].GetComponent <JobBase>();
             if (!jb.CheckFlag(ConditionStatus.SLOW))
             {
                 if (!eb.skillList[2].isRecast)
                 {
                     eb.StartCoroutine(eb.SkillUse(targetCount[ran], eb.skillList[2]));
                     return;
                 }
             }
             else
             {
                 if (!eb.skillList[1].isRecast)
                 {
                     if (!eb.skillList[0].isRecast)
                     {
                         eb.StartCoroutine(eb.SkillUse(targetCount[ran], eb.skillList[0]));
                         return;
                     }
                 }
                 else
                 {
                     if (!eb.skillList[0].isRecast)
                     {
                         eb.StartCoroutine(eb.SkillUse(targetCount[ran], eb.skillList[0]));
                         return;
                     }
                 }
             }
         }
     }
     else
     {
         Debug.Log("TODO: 状態異常のモードに移動");
         return;
     }
 }