public override void OnProduceResult(IResult result, IResultControl control) { base.OnProduceResult(result, control); if (result.ClassID == (int)ENResult.AddBuff) { BuffInfo info = GameTable.BuffTableAsset.Lookup(BuffID); if (info == null) { Debug.LogWarning("buff is not exist, id is " + BuffID); return; } foreach (var item in info.BuffResultList) { if (item.ID == (int)ClassID) { switch ((ENChangeBuffType)item.ParamList[0]) { case ENChangeBuffType.enSelfLength: { ResultAddBuff abResult = result as ResultAddBuff; for (int i = 0; i < abResult.BuffIDList.Length; ++i) { int buffID = (int)abResult.BuffIDList[i]; BuffInfo buffInfo = GameTable.BuffTableAsset.Lookup(buffID); if (buffInfo == null) { continue; } if (buffInfo.BuffType != (int)item.ParamList[1]) { continue; } abResult.BuffModifyTimeList[i] += item.ParamList[2]; } } break; } } } } }
public override void OnGetResult(IResult result, IResultControl control) { base.OnGetResult(result, control); if (result.ClassID == (int)ENResult.AddBuff) { ResultAddBuff r = result as ResultAddBuff; BuffInfo info = GameTable.BuffTableAsset.Lookup(BuffID); foreach (var item in info.BuffResultList) { if (item.ID == (int)ClassID) { switch ((IgnoreDebuffType)item.ParamList[0]) { case IgnoreDebuffType.enControl: { if (item.ParamList[2] < UnityEngine.Random.Range(0.0f, 1.0f)) { //几率 continue; } for (int i = 0; i < r.BuffIDList.Length; ++i) { BuffInfo buffInfo = GameTable.BuffTableAsset.Lookup((int)r.BuffIDList[i]); if (buffInfo != null) { if (buffInfo.BuffEffectType == item.ParamList[1]) { r.BuffIDIsRun[i] = true; } } } } break; } } } } }