public static void HandleEffect(FieldManager field, SkillCast skillCast, int attackIndex) { skillCast.EffectCoords = GetEffectCoords(skillCast, field.MapId, attackIndex); field.AddRegionSkillEffect(skillCast); Task removeEffectTask = RemoveEffects(field, skillCast); if (skillCast.Interval <= 0) { HandleRegionSkill(field, skillCast); VibrateObjects(field, skillCast); return; } // Task to loop trough all entities in range to do damage/heal Task.Run(async() => { while (!removeEffectTask.IsCompleted) { HandleRegionSkill(field, skillCast); VibrateObjects(field, skillCast); // TODO: Find the correct delay for the skill await Task.Delay(skillCast.Interval); } }); }