| 1632 | } |
| 1633 | |
| 1634 | void Obj_Trap(int i) |
| 1635 | { |
| 1636 | int oti, dir; |
| 1637 | BOOLEAN otrig; |
| 1638 | int sx, sy, dx, dy, x, y; |
| 1639 | |
| 1640 | otrig = FALSE; |
| 1641 | if (!object[i]._oVar4) { |
| 1642 | oti = dObject[object[i]._oVar1][object[i]._oVar2] - 1; |
| 1643 | switch (object[oti]._otype) { |
| 1644 | case OBJ_L1LDOOR: |
| 1645 | case OBJ_L1RDOOR: |
| 1646 | case OBJ_L2LDOOR: |
| 1647 | case OBJ_L2RDOOR: |
| 1648 | case OBJ_L3LDOOR: |
| 1649 | case OBJ_L3RDOOR: |
| 1650 | if (object[oti]._oVar4) |
| 1651 | otrig = TRUE; |
| 1652 | break; |
| 1653 | case OBJ_LEVER: |
| 1654 | case OBJ_CHEST1: |
| 1655 | case OBJ_CHEST2: |
| 1656 | case OBJ_CHEST3: |
| 1657 | case OBJ_SWITCHSKL: |
| 1658 | case OBJ_SARC: |
| 1659 | if (object[oti]._oSelFlag == 0) |
| 1660 | otrig = TRUE; |
| 1661 | break; |
| 1662 | } |
| 1663 | if (otrig) { |
| 1664 | object[i]._oVar4 = 1; |
| 1665 | sx = object[i]._ox; |
| 1666 | sy = object[i]._oy; |
| 1667 | dx = object[oti]._ox; |
| 1668 | dy = object[oti]._oy; |
| 1669 | for (y = dy - 1; y <= object[oti]._oy + 1; y++) { |
| 1670 | for (x = object[oti]._ox - 1; x <= object[oti]._ox + 1; x++) { |
| 1671 | if (dPlayer[x][y]) { |
| 1672 | dx = x; |
| 1673 | dy = y; |
| 1674 | } |
| 1675 | } |
| 1676 | } |
| 1677 | if (!deltaload) { |
| 1678 | dir = GetDirection(sx, sy, dx, dy); |
| 1679 | AddMissile(sx, sy, dx, dy, dir, object[i]._oVar3, 1, -1, 0, 0); |
| 1680 | PlaySfxLoc(IS_TRAP, object[oti]._ox, object[oti]._oy); |
| 1681 | } |
| 1682 | object[oti]._oTrapFlag = FALSE; |
| 1683 | } |
| 1684 | } |
| 1685 | } |
| 1686 | |
| 1687 | void Obj_BCrossDamage(int i) |
| 1688 | { |
no test coverage detected