| 482 | } |
| 483 | |
| 484 | BOOL SpecialAutoPlace(int pnum, int ii, int sx, int sy, BOOL saveflag) |
| 485 | { |
| 486 | int i, j, xx, yy; |
| 487 | BOOL done; |
| 488 | |
| 489 | done = TRUE; |
| 490 | yy = 10 * (ii / 10); |
| 491 | if (yy < 0) { |
| 492 | yy = 0; |
| 493 | } |
| 494 | for (j = 0; j < sy && done; j++) { |
| 495 | if (yy >= 40) { |
| 496 | done = FALSE; |
| 497 | } |
| 498 | xx = ii % 10; |
| 499 | if (xx < 0) { |
| 500 | xx = 0; |
| 501 | } |
| 502 | for (i = 0; i < sx && done; i++) { |
| 503 | if (xx >= 10) { |
| 504 | done = FALSE; |
| 505 | } else { |
| 506 | done = plr[pnum].InvGrid[xx + yy] == 0; |
| 507 | } |
| 508 | xx++; |
| 509 | } |
| 510 | yy += 10; |
| 511 | } |
| 512 | if (!done) { |
| 513 | if (sx > 1 || sy > 1) { |
| 514 | done = FALSE; |
| 515 | } else { |
| 516 | for (i = 0; i < MAXBELTITEMS; i++) { |
| 517 | if (plr[pnum].SpdList[i]._itype == ITYPE_NONE) { |
| 518 | done = TRUE; |
| 519 | break; |
| 520 | } |
| 521 | } |
| 522 | } |
| 523 | } |
| 524 | if (done && saveflag) { |
| 525 | plr[pnum].InvList[plr[pnum]._pNumInv] = plr[pnum].HoldItem; |
| 526 | plr[pnum]._pNumInv++; |
| 527 | yy = 10 * (ii / 10); |
| 528 | if (yy < 0) { |
| 529 | yy = 0; |
| 530 | } |
| 531 | for (j = 0; j < sy; j++) { |
| 532 | xx = ii % 10; |
| 533 | if (xx < 0) { |
| 534 | xx = 0; |
| 535 | } |
| 536 | for (i = 0; i < sx; i++) { |
| 537 | if (i != 0 || j != sy - 1) { |
| 538 | plr[pnum].InvGrid[xx + yy] = -plr[pnum]._pNumInv; |
| 539 | } else { |
| 540 | plr[pnum].InvGrid[xx + yy] = plr[pnum]._pNumInv; |
| 541 | } |
no test coverage detected