/// <summary> /// 觸發條件為自身因素者 /// <param name="orgData">攻擊者資料</param> /// <param name="targetData">被攻擊者資料</param> /// <param name="data">技能資料</param> /// <param name="allDamage">傷害資料</param> private void OnSkillSelfRule(SkillLargeData data, List <DamageData> allDamage = null) { mainSkillId = data.id; int parameter = 0; bool[] meets = new bool[data.ruleData.Count]; for (int i = 0; i < data.ruleData.Count; i++) { switch (data.ruleData [i].rule [0]) { case (int)Rule.None: meets [i] = true; break; case (int)Rule.HpLess: case (int)Rule.HpBest: meets [i] = fightController.OnRuleMeets(mainOrgIdx, data.ruleData [i].rule, mainTarget[0]); break; case (int)Rule.OnDmg: meets [i] = allDamage != null && allDamage.Count > 0; parameter = GetDamage(allDamage); break; case (int)Rule.JobCntUp: meets [i] = fightUIController.GetJobGround(data.ruleData [i].rule [1]) >= data.ruleData [i].rule [2]; parameter = fightUIController.GetJobGround(data.ruleData [i].rule [1]); break; case (int)Rule.LayerCntUp: meets [i] = fightUIController.GetLayerGround(data.ruleData [i].rule [1]) >= data.ruleData [i].rule [2]; parameter = fightUIController.GetLayerGround(data.ruleData [i].rule [1]); break; case (int)Rule.JobCntDown: meets [i] = fightUIController.GetJobGround(data.ruleData [i].rule [1]) < data.ruleData [i].rule [2]; parameter = fightUIController.GetJobGround(data.ruleData [i].rule [1]); break; case (int)Rule.LayerCntDown: meets [i] = fightUIController.GetLayerGround(data.ruleData [i].rule [1]) < data.ruleData [i].rule [2]; parameter = fightUIController.GetLayerGround(data.ruleData [i].rule [1]); break; } } if (data.isOr) { for (int i = 0; i < data.ruleData.Count; i++) { if (meets [i] == true) { if (mainTarget [0] == "E" || (mainTarget [0] == "P" && fightUIController.GetEnerge(data.ruleData [i].energe) == true)) { Debug.Log("Launch Success"); OnEffectTarget(AddParameter(false, data.ruleData [i], parameter)); } else { if (fightUIController.GetEnerge(data.ruleData [i].energe) == false) { Debug.Log("Energe Not Worth"); } } } } } else { if (!DataUtil.CheckArray <bool> (meets, false)) { OnMultiEffectTarget(data.ruleData, parameter, true); } } }