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