Hung and Mendelsohn also give a modification of Chronos’s rotating circles method for handling even n > 2 (they don’t describe it in this rotating circles language, and indeed they describe it rather more opaquely, but luckily, I’m here to describe it more clearly, hopefully):
I’ll describe it first in the case of n which is a multiple of 4. Indeed, I’ll first describe a schedule which almost but doesn’t quite work, and then I’ll show how to patch it up:
Set up an inner circle and outer circle. At the end of every timeslot, the inner circle rotates one step clockwise, and the outer circle rotates one step counterclockwise, except two special things happen: At the halfway timeslot, when teams are about to face the same opponents as originally, have everyone in the inner circle rotate 1 extra step. And at the last timeslot, when the inner circle is now about to go back to the activities they started at, have them rotate 180 degrees extra, to the activities they missed because of our shenanigans at the halfway timeslot.
Clearly, this satisfies conditions 1 through 3 from the OP, and also it very nearly satisfies condition 4. The only problem is, now our shenanigans have resulted in the opponent pairings at the 75% of the way through timeslot matching the opponents pairings at the last timeslot.
No problem. Take the schedule this produces, and we’ll fuck with that 75% timeslot and one of the timeslots next to it (before or after, your choice, doesn’t matter; the important thing is that they’re adjacent timeslots without special case shenanigans, containing the one timeslot that ever duplicates any pairing from another), to fix things.
Take these two timeslots/rows, and also pair off activities/columns with adjacent activities (so the first and second activity are paired off, the 3rd and 4th activity are paired off, etc). Within any of these two by two cells of our schedule, things look like so:
As Bt
Br Cs
Where A, B, C, … are some inner circle teams and r, s, t, … are some outer circle teams, movement to the left is clockwise and movement to the right is counterclockwise. We will replace each of these blocks with:
AB st
rs BC
Notice that the collection of values appearing in each row stays the same, and the collection of values appearing in each column stays the same. Thus, since we already satisfied conditions 1 through 3, we will continue to do so. But now, instead of inner-circle teams facing outer-circle teams, all competition in these two timeslots is intra-circle (thus, not duplicating what happens in any other timeslots; also, each team plays its two different same-circle neighbors over these two timeslots, so these timeslots do not duplicate pairings with each other); this fixes our problem with condition 4.
After we make this modification, our schedule is perfect and we’re ready to go!