$NetBSD: patch-ae,v 1.3 2006/08/02 19:24:55 kristerw Exp $ --- ai.c.orig 1999-06-30 20:25:02.000000000 +0200 +++ ai.c 2006-08-02 21:15:07.000000000 +0200 @@ -59,12 +59,12 @@ int tries=0; /* If in a halfstep, finish it */ - if(trunc(amonst->x)!=round(amonst->x)) switch(amonst->dir) { + if(mytrunc(amonst->x)!=roundup(amonst->x)) switch(amonst->dir) { case LEFT: amonst->x-=0.5; return; case RIGHT: amonst->x+=0.5; return; default: amonst->dir = directions[(int)rnd(2) + 2]; } - if(trunc(amonst->y)!=round(amonst->y)) switch(amonst->dir) { + if(mytrunc(amonst->y)!=roundup(amonst->y)) switch(amonst->dir) { case UP: amonst->y-=0.5; return; case DOWN: amonst->y+=0.5; return; default: amonst->dir = directions[(int)rnd(2)]; @@ -83,10 +83,10 @@ /* Find coordinates for new position */ switch(dir) { - case UP: y-=0.5; eqy=trunc(y); eqx=trunc(x); break; - case DOWN: y+=0.5; eqy=round(y); eqx=trunc(x); break; - case LEFT: x-=0.5; eqy=trunc(y); eqx=trunc(x); break; - case RIGHT: x+=0.5; eqy=trunc(y); eqx=round(x); break; + case UP: y-=0.5; eqy=mytrunc(y); eqx=mytrunc(x); break; + case DOWN: y+=0.5; eqy=roundup(y); eqx=mytrunc(x); break; + case LEFT: x-=0.5; eqy=mytrunc(y); eqx=mytrunc(x); break; + case RIGHT: x+=0.5; eqy=mytrunc(y); eqx=roundup(x); break; default: printf("Error: Not a direction\n"); return; } @@ -94,7 +94,7 @@ if(!checkdest(eqx, eqy)) goto tryagain; /* Check for double half-step */ - if(trunc(x)!=round(x) && trunc(y)!=round(y)) goto tryagain; + if(mytrunc(x)!=roundup(x) && mytrunc(y)!=roundup(y)) goto tryagain; /* Passes all checks */ amonst->x = x; @@ -111,12 +111,12 @@ float dx, dy, dz; /* If in a halfstep, finish it */ - if(trunc(amonst->x)!=round(amonst->x)) switch(amonst->dir) { + if(mytrunc(amonst->x)!=roundup(amonst->x)) switch(amonst->dir) { case LEFT: amonst->x-=0.5; return; case RIGHT: amonst->x+=0.5; return; default: amonst->dir = directions[(int)rnd(2) + 2]; } - if(trunc(amonst->y)!=round(amonst->y)) switch(amonst->dir) { + if(mytrunc(amonst->y)!=roundup(amonst->y)) switch(amonst->dir) { case UP: amonst->y-=0.5; return; case DOWN: amonst->y+=0.5; return; default: amonst->dir = directions[(int)rnd(2)]; @@ -136,8 +136,8 @@ tryagain: /* Come back here to try again */ tries++; if(tries>100) { - if(trunc(amonst->x)==round(amonst->x) && - trunc(amonst->y)==round(amonst->y)) + if(mytrunc(amonst->x)==roundup(amonst->x) && + mytrunc(amonst->y)==roundup(amonst->y)) watchentity(amonst, target); return; } @@ -175,7 +175,7 @@ if(!checkdest(eqx, eqy)) goto tryagain; /* Be careful of half-steps */ - if(trunc(x)!=round(x) && trunc(y)!=round(y)) goto tryagain; + if(mytrunc(x)!=roundup(x) && mytrunc(y)!=roundup(y)) goto tryagain; /* Done working out new position, assign to character */ amonst->x = x; @@ -193,7 +193,6 @@ case DOWN: y+=1; break; case LEFT: x-=1; break; case RIGHT: x+=1; break; - default: } icorrectpos(&x, &y); if(!checkdest(x, y) && data[xytotype(x, y)].etype==CHARACTER) { @@ -279,22 +278,22 @@ printf("I was asked to kill a monster that shouldn't be killed!\n"); if(amonst->health <= 0) { if(data[amonst->type].etype != EFFECT) { - maze[round(amonst->y)][round(amonst->x)] = -2; /* Blank */ - maze[trunc(amonst->y)][trunc(amonst->x)] = -2; /* Blank */ + maze[roundup(amonst->y)][roundup(amonst->x)] = -2; /* Blank */ + maze[mytrunc(amonst->y)][mytrunc(amonst->x)] = -2; /* Blank */ } draw_tilex2(mainwindow, data[amonst->type].tile[amonst->frame], amonst->x*GRIDSIZE, amonst->y*GRIDSIZE, BLACK, amonst->dir); } /* If there was something underneath the effect, redraw it */ - if(maze[trunc(amonst->y)][trunc(amonst->x)]!=-2) { - bmonst=&monst[maze[trunc(amonst->y)][trunc(amonst->x)]]; + if(maze[mytrunc(amonst->y)][mytrunc(amonst->x)]!=-2) { + bmonst=&monst[maze[mytrunc(amonst->y)][mytrunc(amonst->x)]]; draw_tilex2(mainwindow, data[bmonst->type].tile[bmonst->frame], bmonst->x*GRIDSIZE, bmonst->y*GRIDSIZE, bmonst->color, bmonst->dir); } - if(maze[round(amonst->y)][round(amonst->x)]!=-2) { - bmonst=&monst[maze[round(amonst->y)][round(amonst->x)]]; + if(maze[roundup(amonst->y)][roundup(amonst->x)]!=-2) { + bmonst=&monst[maze[roundup(amonst->y)][roundup(amonst->x)]]; draw_tilex2(mainwindow, data[bmonst->type].tile[bmonst->frame], bmonst->x*GRIDSIZE, bmonst->y*GRIDSIZE, bmonst->color, bmonst->dir); @@ -353,10 +352,10 @@ amonst->atspeed = 10; else amonst->atspeed=4; switch(amonst->dir) { - case LEFT: fx-=1; x=trunc(fx); y=trunc(fy); break; - case RIGHT: fx+=1; x=round(fx); y=trunc(fy); break; - case UP: fy-=1; y=trunc(fy); x=trunc(fx); break; - case DOWN: fy+=1; y=round(fy); x=trunc(fx); break; + case LEFT: fx-=1; x=mytrunc(fx); y=mytrunc(fy); break; + case RIGHT: fx+=1; x=roundup(fx); y=mytrunc(fy); break; + case UP: fy-=1; y=mytrunc(fy); x=mytrunc(fx); break; + case DOWN: fy+=1; y=roundup(fy); x=mytrunc(fx); break; } icorrectpos(&x, &y); if(!checkdest(x, y)) { @@ -420,8 +419,8 @@ if(!(amonst->x == target->x || amonst->y == target->y)) return 0; /* Halfsteps are banned */ - if(round(amonst->x) != trunc(amonst->x)) return 0; - if(round(amonst->y) != trunc(amonst->y)) return 0; + if(roundup(amonst->x) != mytrunc(amonst->x)) return 0; + if(roundup(amonst->y) != mytrunc(amonst->y)) return 0; /* Force x1, y1 to be smaller pair */ if(x1 > x2) {