4)毒:
本示例教程中我將之定義為精靈每秒持續傷血。此效果實現起來更簡單了,只需要在主界面間隔為1秒的輔助線程計時器中對中毒時間是否大於0進行判斷,然後進行相應的傷害處理即可;並且其他的所有附加屬性的時間減少均寫在該方法內:
//同步激發精靈附加屬性效果
for (int i = 0; i < CarrIEr.Children.Count; i++) {
if (CarrIEr.Children[i] is QXSpirit) {
QXSpirit spirit = CarrIEr.Children[i] as QXSpirit;
if (spirit.VLife != 0) {
for (int j = 0; j < spirit.ExtraTime.Count(); j++) {
if (spirit.ExtraTime[j] > 0) {
//中毒則每秒傷血
if (j == 3) {
Super.DoInjure(Find(spirit.ExtrASPirit), spirit, spirit.ExtraEffect[j]);
}
//持續時間減少
spirit.ExtraTime[j] = spirit.ExtraTime[j] - AuxiliaryThread.Interval.Seconds;
if (spirit.ExtraTime[j] <= 0) {
//移除附加屬性效果
Super.RemoveExtraEffect(spirit, j);
}
}
}
}
}
}
測試效果截圖:
5)火:
本示例教程中我將之定義為降低精靈所有防御類屬性值。類似於冰的效果,處理時只需將物理防御力的Buff[9]、隔擋率的Buff[10]、魔法防御力的Buff[12]減少對應的火攻擊值即可:
enemy.Buff[9] = -enemy.ExtraEffect[magic.ExtraAttribute];
enemy.Buff[10] = -enemy.ExtraEffect[magic.ExtraAttribute];
enemy.Buff[12] = -enemy.ExtraEffect[magic.ExtraAttribute];
解除時3者歸0。
測試效果截圖: