Exemplo n.º 1
0
        async Task <bool> ExecuteSkill(SkillInfo skillInfo, Actor target)
        {
            if (sslist.Contains(skillInfo.skillName))
            {
                return(await ExecuteSS(skillInfo.skillName));
            }

            int castDuration = profile.minCastTime;

            //Log.Info("Cheking skill: " + skillName);

            var skill = GameManager.LocalPlayer.GetSkillByName(skillInfo.skillName);

            if (skill == null)
            {
                //Log.Info(skillName + " not available");
                return(false);
            }

            if (await CombatUtils.BasicSkillCondition(skill, skillInfo, target))
            {
                skill.Cast();

                int fullCast = skill.CastDuration;                 //TODO check if we can anicancel lateron

                /*
                 * if (skillInfo.channeledSkill)
                 * {
                 * fullCast = skill.Record.ExecDuration1 + skill.Record.ExecDuration2
                 + skill.Record.ExecDuration3 + skill.Record.ExecDuration4 + skill.Record.ExecDuration5;
                 +
                 + }*/

                if (fullCast > castDuration)
                {
                    castDuration = fullCast;
                }

                Log.Warn("+++Casting " + skillInfo.skillName + " with sleep: " + castDuration);
                await Coroutine.Sleep(castDuration);

                Log.Info("Done waiting " + castDuration);

                return(true);
            }
            return(false);
        }