![Smile :)](./images/smilies/icon_smile.gif)
First, assume that when two players start dueling, there's a pot of points. Let's say it's 2 points, like it is on the cvs fortress server. If you win, you get two points, if he wins, he gets two points. Then you measure the two player's distance at certain intervals (every timestep?). If their average distance over a given period of time is within a certain margin, then you add a point to the pot, so the kill is now worth 3 points. But if the average distance goes over that margin, then you clear the pot. Obviously not a complete idea, but the question is, is there something to be gained by using distance measurements in this fashion? You could also check a two player's distances, and if it starts large, then gets small quickly, and then suddenly one player kills the other one, you could say "<player who died> loses 1 point for being owned", or something like that.
Second, draw a line from a cycle to the enemy zone and check which cycle's walls the line crosses. If it crosses any enemies, store it. Then, over time, if the same cycle wall appears between the same cycle and it's opposing zone, you can mark that cycle wall's owner as "defending the zone". Give another time threshold, and then award him extra points, either at the round's conclusion, or after the time threshold, for defending the zone. How to do this without getting false positives, I don't know.
Third, when a cycle enters the fortress, you already know he's there. And you're already timing how long he's there. So mark it, and if he's there for a certain minimum threshold, and then afterwards the zone resets, give the cycle responsible an extra point for defending the zone.
Hmm, just some half-baked ideas. What sort of primitive data collection can we do that can be used to determine what's happening?