It's because your code:
animate.obj(o3);
load.view(54);
set.view(o3,54);
set.loop(o3,0);
set.cel(o3,0);
position(o3,25,149);
ignore.horizon(o3);
ignore.blocks(o3);
ignore.objs(o3);
draw(o3);
was placed outside of your new room section. That code is getting executed each interpreter cycle.
To your second question, use a counter variable, something like this:
#define vCounter v200
if (new_room)
{
vCounter = 0;
}
if (vCounter < 30)
{
vCounter++;
}
else
{
if (vCounter == 30)
{
display(20, 1, "Patrick's Quest AGI created by smartguy240");
display(21, 1, "Copyright 2002. All Rights Reserved");
vCounter++;
}
}