I've never done it, or been involved with this kind of discussion before, but I'd say you need to move anything that can be tweaked to give the player an advantage.

You could probably do it quite quickly with something like this...

[pascal]
const
_movingDataItems = 2;

type
PInt = ^Integer;

TMyMovingData = class(TObject)
protected
fMovingData : array[1.._movingDataItems] of PInt;
function getData(index:integer):integer;
procedure setData(index:integer;value:integer);
public
constructor create;
destructor destroy; override;

property armour:integer index 1 read getData write setData;
property gold:integer index 2 read getData write setData;
end;

....

constructor TMyMovingData.create;
var
loop : integer;
temp : PInt;
begin
inherited;

for loop:=1 to _movingDataItems do
begin
new(temp);
temp^:=0;
fMovingData[loop]:=temp;
end;
end;

destructor TMyMovingData.destroy;
var
loop : integer;
temp : PInt;
begin
for loop:=1 to _movingDataItems do
begin
temp:=fMovingData[loop];
dispose(temp);
end;

inherited;
end;

function TMyMovingData.getData(index:integer):integer;
var
temp : PInt;
newTemp : PInt;
begin
if (index in [1.._movingDataItems]) then
begin
temp:=fMovingData[index];
result:=temp^;
new(newTemp);
dispose(temp);
newTemp^:=resuilt;
fMovingData[index]:=newTemp;
end
else
raise exception.create('Index out of bounds in TMyMovingData.getData ('+intToStr(index)+')');
end;

procedure TMyMovingData.setData(index:integer;value:integer) ;
begin
if (index in [1.._movingDataItems]) then
begin
fMovingData[index]^:=value;
end
else
raise exception.create('Index out of bounds in TMyMovingData.setData ('+intToStr(index)+')');
end;

[/pascal]

Using this object you could store a lot of integer data that will change location in memory every time you read it, I think thats the essence of whats been suggested.

I haven't tested this code, I've just written it to give you a method you could use.

Hope it helps