public override List <InstantCastEvent> ComputeInstantCast(CombatData combatData, SkillData skillData, AgentData agentData) { var res = new List <InstantCastEvent>(); EffectGUIDEvent effectGUIDEvent = combatData.GetEffectGUIDEvent(_effectGUID); if (effectGUIDEvent != null) { Dictionary <AgentItem, List <EffectEvent> > effects = GetEffectEventDict(effectGUIDEvent, combatData); foreach (KeyValuePair <AgentItem, List <EffectEvent> > pair in effects) { long lastTime = int.MinValue; foreach (EffectEvent effectEvent in pair.Value) { if (effectEvent.Time - lastTime < ICD) { lastTime = effectEvent.Time; continue; } if (_triggerCondition != null) { if (_triggerCondition(effectEvent, combatData)) { lastTime = effectEvent.Time; res.Add(new InstantCastEvent(effectEvent.Time, skillData.Get(SkillID), GetAgent(effectEvent))); } } else { lastTime = effectEvent.Time; res.Add(new InstantCastEvent(effectEvent.Time, skillData.Get(SkillID), GetAgent(effectEvent))); } } } } return(res); }