public AnimatedCastEvent(CombatItem startItem, CombatItem endItem, AgentData agentData, SkillData skillData) : this(startItem, agentData, skillData)
        {
            ActualDuration        = endItem.Value;
            _scaledActualDuration = endItem.BuffDmg;
            if (Skill.ID == SkillItem.DodgeId)
            {
                ExpectedDuration      = 750;
                ActualDuration        = 750;
                _scaledActualDuration = 0;
            }
            double nonScaledToScaledRatio = 1.0;

            if (_scaledActualDuration > 0)
            {
                nonScaledToScaledRatio = (double)_scaledActualDuration / ActualDuration;
                Acceleration           = GeneralHelper.Clamp(2.0 * ((Math.Log(nonScaledToScaledRatio) - _lowerLimit) / _diffLimit) - 1.0, -1.0, 1.0);
            }
            switch (endItem.IsActivation)
            {
            case ParseEnum.Activation.CancelCancel:
                Status        = AnimationStatus.Iterrupted;
                SavedDuration = -ActualDuration;
                break;

            case ParseEnum.Activation.Reset:
                Status = AnimationStatus.Full;
                break;

            case ParseEnum.Activation.CancelFire:
                int nonScaledExpectedDuration = (int)Math.Round(ExpectedDuration / nonScaledToScaledRatio);
                SavedDuration = Math.Max(nonScaledExpectedDuration - ActualDuration, 0);
                Status        = AnimationStatus.Reduced;
                break;
            }
        }