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);
        }