Needless to say this can easily be done with script. However you have to refine a few areas of your requirements:
(1) Using a checkbox to indicate a half day is just complicating the matter. Would the checkbox alone indicate the morning or afternoon assignment? You need to break your assignments into blocks of time that are fully defined by start and end field values that are unambiguous.
(2) The duration of the assignment should not be a field but rather a parameter of a query. I should be input by the user into some type of dialog box prior running the query (similar in concept to _ask_the_user)
(3) Let's say you have fields and in a child table indicating the start and end time for a consultant's assignments. Let s(n) and e(n) be the values of and for each of the n child records. All you rally have to do is run through each of the following intervals and check if the interval is greater than or equal to the duration required for the assignment:
is s(1) - Now() => duration?
is s(2) - e(1) => duration?
is s(3) - e(2) => duration?
is s(4) - e(3) => duration?
...
is s(n) - e(n-1) => duration
This can easily be done in script.