public virtual void Effect(ISkillArgs args) { ISkillEffect newE = SelectHighest(); if (current == null) { if (newE != null) { current = newE; current.Effect(args); } } else { if (newE == null) { current.Resume(args); current = newE; } else { if (newE.GetLevel() != current.GetLevel()) { current.Resume(args); current = newE; current.Effect(args); } } } }
public virtual void AddSkillEffect(ISkillEffect effct) { ISkillEffect old = this.effects[effct.GetSource()]; if (old == null || old.GetLevel() <= effct.GetLevel()) { this.effects[effct.GetSource()] = effct; this.key = effct.GetKey(); this.timeMap[GetEffectKey(effct)] = Runtime.CurrentTimeMillis(); } }
private string GetEffectKey(ISkillEffect effct) { return(effct.GetKey() + "_" + effct.GetSource() + "_" + effct.GetLevel()); }