| 1644 | } |
| 1645 | |
| 1646 | void L2LockoutFix() |
| 1647 | { |
| 1648 | int i, j; |
| 1649 | BOOL doorok; |
| 1650 | |
| 1651 | for (j = 0; j < DMAXY; j++) { |
| 1652 | for (i = 0; i < DMAXX; i++) { |
| 1653 | if (dungeon[i][j] == 4 && dungeon[i - 1][j] != 3) { |
| 1654 | dungeon[i][j] = 1; |
| 1655 | } |
| 1656 | if (dungeon[i][j] == 5 && dungeon[i][j - 1] != 3) { |
| 1657 | dungeon[i][j] = 2; |
| 1658 | } |
| 1659 | } |
| 1660 | } |
| 1661 | for (j = 1; j < DMAXY - 1; j++) { |
| 1662 | for (i = 1; i < DMAXX - 1; i++) { |
| 1663 | if (dflags[i][j] & DLRG_PROTECTED) { |
| 1664 | continue; |
| 1665 | } |
| 1666 | if ((dungeon[i][j] == 2 || dungeon[i][j] == 5) && dungeon[i][j - 1] == 3 && dungeon[i][j + 1] == 3) { |
| 1667 | doorok = FALSE; |
| 1668 | while (1) { |
| 1669 | if (dungeon[i][j] != 2 && dungeon[i][j] != 5) { |
| 1670 | break; |
| 1671 | } |
| 1672 | if (dungeon[i][j - 1] != 3 || dungeon[i][j + 1] != 3) { |
| 1673 | break; |
| 1674 | } |
| 1675 | if (dungeon[i][j] == 5) { |
| 1676 | doorok = TRUE; |
| 1677 | } |
| 1678 | i++; |
| 1679 | } |
| 1680 | if (!doorok && !(dflags[i - 1][j] & DLRG_PROTECTED)) { |
| 1681 | dungeon[i - 1][j] = 5; |
| 1682 | } |
| 1683 | } |
| 1684 | } |
| 1685 | } |
| 1686 | for (j = 1; j < DMAXX - 1; j++) { /* check: might be flipped */ |
| 1687 | for (i = 1; i < DMAXY - 1; i++) { |
| 1688 | if (dflags[j][i] & DLRG_PROTECTED) { |
| 1689 | continue; |
| 1690 | } |
| 1691 | if ((dungeon[j][i] == 1 || dungeon[j][i] == 4) && dungeon[j - 1][i] == 3 && dungeon[j + 1][i] == 3) { |
| 1692 | doorok = FALSE; |
| 1693 | while (1) { |
| 1694 | if (dungeon[j][i] != 1 && dungeon[j][i] != 4) { |
| 1695 | break; |
| 1696 | } |
| 1697 | if (dungeon[j - 1][i] != 3 || dungeon[j + 1][i] != 3) { |
| 1698 | break; |
| 1699 | } |
| 1700 | if (dungeon[j][i] == 4) { |
| 1701 | doorok = TRUE; |
| 1702 | } |
| 1703 | i++; |