The scripts generating the league tables for 1996-2007 use the following code to compute the scores:
for p in self.pow_by_letter.values(): pscore = ((0.2 * (p.last_year - self.variant.first_year + 1)) / (self.last_year - self.variant.first_year + 1)) mul1 = ((0.7 * p.end_sc) / winning_end_sc) mul2 = (1 + (p.end_sc - p.start_sc) / (7.0 * (winning_end_sc - winning_start_sc))) pscore = pscore + mul1 * mul2 p.prescore = pscore total = 0 for p in self.pow_by_letter.values(): total = total + p.prescore factor = len(self.pow_by_letter) * 50.0 / total for p in self.pow_by_letter.values(): p.score = factor * p.prescore
This is the Python
formulation of the following algorithm:
Each player is first given a prescore. A player who has been eliminated he receives a prescore of
where YE is the year the player was eliminated in and
YG is the number of years that the game was played.
A player who has not been eliminated receives a prescore of
where FP, SP, FW, SW
are the number of final and starting SCs of the player and the winner
of the game respectively (it may be noted that this gives the winner
a prescore of 1.00).
The prescores of the players are then all scaled up by a factor so that the average score in the game is 50.
A convoy is successful if there is at least one unbroken convoy for the army from its origin to its destination.
If a convoy paradox arises the convoyed army does not cut support given by a unit in the destination province to an attack on a fleet necessary for convoying the army.
Octarine: The starting units in Hung Hung and Terror Incognita