Refactor of dwarfmove logic.
This commit is contained in:
parent
af453777d4
commit
e3f3c86d1d
1 changed files with 15 additions and 9 deletions
24
main.c
24
main.c
|
@ -220,13 +220,19 @@ static bool dwarfmove(void)
|
||||||
if(kk != 0)
|
if(kk != 0)
|
||||||
do {
|
do {
|
||||||
game.newloc=MOD(labs(TRAVEL[kk])/1000,1000);
|
game.newloc=MOD(labs(TRAVEL[kk])/1000,1000);
|
||||||
if(game.newloc > 300 || !INDEEP(game.newloc) || game.newloc == game.odloc[I] || (J > 1 && game.newloc == TK[J-1]) || J >= 20 || game.newloc == game.dloc[I] ||
|
/* Have we avoided a dwarf enciounter? */
|
||||||
FORCED(game.newloc) || (I == 6 && CNDBIT(game.newloc,3)) ||
|
bool avoided = (game.newloc > 300 ||
|
||||||
labs(TRAVEL[kk])/1000000 == 100)
|
!INDEEP(game.newloc) ||
|
||||||
goto L6014;
|
game.newloc == game.odloc[I] ||
|
||||||
TK[J]=game.newloc;
|
(J > 1 && game.newloc == TK[J-1]) ||
|
||||||
J=J+1;
|
J >= 20 ||
|
||||||
L6014:
|
game.newloc == game.dloc[I] ||
|
||||||
|
FORCED(game.newloc) ||
|
||||||
|
(I == 6 && CNDBIT(game.newloc,3)) ||
|
||||||
|
labs(TRAVEL[kk])/1000000 == 100);
|
||||||
|
if (!avoided) {
|
||||||
|
TK[J++] = game.newloc;
|
||||||
|
}
|
||||||
kk=kk+1;
|
kk=kk+1;
|
||||||
} while
|
} while
|
||||||
(TRAVEL[kk-1] >= 0);
|
(TRAVEL[kk-1] >= 0);
|
||||||
|
@ -247,7 +253,7 @@ static bool dwarfmove(void)
|
||||||
* (game.prop=0). */
|
* (game.prop=0). */
|
||||||
if(game.loc == game.chloc || game.prop[CHEST] >= 0) continue;
|
if(game.loc == game.chloc || game.prop[CHEST] >= 0) continue;
|
||||||
K=0;
|
K=0;
|
||||||
for (J=50; J<=MAXTRS; J++) {
|
for (J=MINTRS; J<=MAXTRS; J++) {
|
||||||
/* Pirate won't take pyramid from plover room or dark
|
/* Pirate won't take pyramid from plover room or dark
|
||||||
* room (too easy!). */
|
* room (too easy!). */
|
||||||
if(J == PYRAM && (game.loc == PLAC[PYRAM] || game.loc == PLAC[EMRALD]))
|
if(J == PYRAM && (game.loc == PLAC[PYRAM] || game.loc == PLAC[EMRALD]))
|
||||||
|
@ -256,7 +262,7 @@ static bool dwarfmove(void)
|
||||||
goto L6021;
|
goto L6021;
|
||||||
L6020:
|
L6020:
|
||||||
if(HERE(J))K=1;
|
if(HERE(J))K=1;
|
||||||
} /* end loop */
|
}
|
||||||
if(game.tally == 1 && K == 0 && game.place[CHEST] == 0 && HERE(LAMP) && game.prop[LAMP] == 1)
|
if(game.tally == 1 && K == 0 && game.place[CHEST] == 0 && HERE(LAMP) && game.prop[LAMP] == 1)
|
||||||
goto L6025;
|
goto L6025;
|
||||||
if(game.odloc[PIRATE] != game.dloc[PIRATE] && PCT(20))
|
if(game.odloc[PIRATE] != game.dloc[PIRATE] && PCT(20))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue