I don't know why it would do that. For comparison, here is one of the first scripts I ever made:
ffc script random_door_generator{ //ver2.1
void run(){
int ddoor = 0;
int udoor = 0;
int ldoor = 0;
int rdoor = 0;
int RandNum = Rand(4);
if (Link->Dir == 0 && Screen->Door[DIR_DOWN] == D_WALL){ ddoor = 1;}
if (Link->Dir == 1 && Screen->Door[DIR_UP] == D_WALL){ udoor = 1;}
if (Link->Dir == 2 && Screen->Door[DIR_RIGHT] == D_WALL){ rdoor = 1;}
if (Link->Dir == 3 && Screen->Door[DIR_LEFT] == D_WALL){ ldoor = 1;}
if (RandNum == 0 && Screen->Door[DIR_DOWN] == D_WALL){ Screen->Door[DIR_DOWN] = D_SHUTTER;}
if (RandNum == 0 && Screen->Door[DIR_UP] == D_WALL){Screen->Door[DIR_UP] = D_SHUTTER;}
if (RandNum == 1 && Screen->Door[DIR_RIGHT] == D_WALL){Screen->Door[DIR_RIGHT] = D_SHUTTER;}
if (RandNum == 1 && Screen->Door[DIR_LEFT] == D_WALL){Screen->Door[DIR_LEFT] = D_SHUTTER; }
if (RandNum == 2 && Screen->Door[DIR_DOWN] == D_WALL){Screen->Door[DIR_DOWN] = D_SHUTTER;}
if (RandNum == 2 && Screen->Door[DIR_UP] == D_WALL){Screen->Door[DIR_UP] = D_SHUTTER;}
if (RandNum == 2 && Screen->Door[DIR_RIGHT] == D_WALL){Screen->Door[DIR_RIGHT] = D_SHUTTER;}
if (RandNum == 3 && Screen->Door[DIR_LEFT] == D_WALL){Screen->Door[DIR_LEFT] = D_SHUTTER;}
if (RandNum == 3 && Screen->Door[DIR_RIGHT] == D_WALL){Screen->Door[DIR_RIGHT] = D_SHUTTER;}
if (RandNum == 3 && Screen->Door[DIR_UP] == D_WALL){Screen->Door[DIR_UP] = D_SHUTTER; }
if (ddoor == 1){Screen->Door[DIR_DOWN] = D_1WAYSHUTTER;}
if (udoor == 1){Screen->Door[DIR_UP] = D_1WAYSHUTTER;}
if (rdoor == 1){Screen->Door[DIR_RIGHT] = D_1WAYSHUTTER;}
if (ldoor == 1){Screen->Door[DIR_LEFT] = D_1WAYSHUTTER; }
}
}
They're not boolean, It looks right on first glance.
EDIT; Oh, I think there was a door bug in one of the newer builds, that might be a problem also.
Also you imported std.zh right? Doesn't hurt to ask.
Edited by Gleeok, 31 December 2007 - 11:37 AM.