Roland Johansen
Deity
Building a deduction function into BUG would certainly do it, and might not be as hard as you think.
Another solution is write a mathematical proof that it CAN be determined, then go ahead and display the information without performing any deduction. Assuming the proof is valid, it will be just as effective for auditing the "unaltered gameplay", as the source code of a deduction function.
I think I can mathematically prove that it cannot be always determined. For instance in a dual game, when you meet your only opponent, it will not always be possible to determine the value of the random variable. Only when the relation slowly shifts will you be able to determine the value of the random variable once you cross the threshold value that changes the relation with an opponent. But you cannot mathematically prove that relations will shift (allthough they typically do during a game).
Programming BUG to determine the value of the random variable per opponent is possible if the programmer has good deductive reasoning skills and knows the exact formula being used by the game and is willing to do the effort. Taking into account all factors can be more of a bookkeeping task than a deductive reasoning task.
I guess that a way to program such an algorithm to determine the random variable would be along the following lines:
A) calculate sum of non-random attitude modifiers
B) check diplomatic relations ingame(furious, annoyed, cautious, pleased and friendly)
C) determine the value of the attitude modifier that is linked to the current diplomatic relations (for instance attitude is between -3 and +3 for cautious)
D) compare the value of A and C and determine the interval of the random modifier (for instance between 0 and 4)
E) repeat every time A or B changes and try to narrow the interval you get in D with each itteration.