I was thinking something like this:
If you keep all player critical stuff out of the Class types, you could swap them at will.
edit: Yep, seems like you had it all figured out already =)
Type TPlayer Field Class:TClass Method Attack() Class.Attack() EndMethod EndType Type TClass Method Attack() Abstract EndType Type TWizard Extends TClass Method Attack() EndMethod EndType
If you keep all player critical stuff out of the Class types, you could swap them at will.
edit: Yep, seems like you had it all figured out already =)