ok, I will put in a counter and see how many loops I get as a test. Thanks.
Edit:
While PlayerRef == none || PlayerRef.gettype() != 62
; || !Playerref.haskeyword(actortypeNPC) ;kCharacter = 62
PlayerRef = game.GetPlayer()
run = run + 1
endwhile
debug.messagebox(run)
well... I only get a 1 count each time I load the game.

But this was in one of my other scripts, the issue I was having was in a quests start up script in an OnInt block. I did not do it there because I had already changed all the ref to Game.getplayer().Addperk(). So I did not need it there. But I will try the test there as well latter.
If my diagnosis of the problem is correct, and the problem is due to Game.GetPlayer() taking some time to execute, then that while loop may well cause the function to be called multiple times, as the next iteration of the loop would run before the first instance of the function returns.
Cipscis