I'm by no means an expert, so I'm not sure how to handle the conversational stuff, but instead of putting multiple versions of the same character, which you can't really do, moving the Clarence object would be the easiest method, I think.
The best way to handle this in your case would be to go to the Scripts tab of the first room, and under 'After leaving the room' add a move object script to move the Clarence object to the new room you want him to appear in.
Edit: I just realized it would probably be a good idea to check if the clarence object is in the room first, in case the player goes back. I'm not sure if this would cause an error or not. This is how I would deal with it.
list_room_contents = GetAllChildObjects(Room 1)
foreach (check_for_clarence, list_room_contents) {
if (check_for_clarence = Clarence) {
MoveObject (Clarence, Room 3)
}
}
And as I think about it, you could probably put some conditional elements in the conversational scripts that checks what room is in.. something along these lines:
if (clarence.parent = Room 1) {
Conversation Topic 1
}
else {
Conversation Topic 2
}
Something along those lines anyway. Should be a starting point. I'm sure some of the more experienced people on this forum could elaborate on it if needed.