Fully working new version of the code.

Yet to completed as it requires:

Checks to scores produced - i.e. ensure they are within a particular range.

Checks to make sure negative values aren't creeping in to score calculations.