Shouldn't you have the list in the character type, to store all your characters including warriors in one place rather than a seperate list for each type of character?
You should probably have both. You'll normally have operations you want to carry out on all characters, but at the same time, you might well have operations you only want to carry out on warriors. While you can iterate through a list of all characters, it's inevitably slower to say
For Local W:Warrior=EachIn Character.List Next
Than it is to say
For Local W:Warrior=EachIn Warrior.List Next
Object Oriented Programming can be very useful for games, but for me it's much more of a double-edged sword than it is for application programming. Application programming rarely has to worry about milliseconds. A good solid algorithm more than makes up for a few milliseconds here and there because of OOP. With games, it's a constant battle between doing things the best way and doing things the fastest way. If you potentially have a lot of characters and need to process something on warriors every frame, you have to decide if you can afford to lose those precious CPU cycles iterating through a list with many objects you don't want.