/// <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; }
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; } }