| 3549 | } |
| 3550 | |
| 3551 | BOOL OperateFountains(int pnum, int i) |
| 3552 | { |
| 3553 | int prev, add, rnd, cnt; |
| 3554 | BOOL applied, done; |
| 3555 | |
| 3556 | applied = FALSE; |
| 3557 | SetRndSeed(object[i]._oRndSeed); |
| 3558 | switch (object[i]._otype) { |
| 3559 | case OBJ_BLOODFTN: |
| 3560 | if (deltaload) |
| 3561 | return FALSE; |
| 3562 | if (pnum != myplr) |
| 3563 | return FALSE; |
| 3564 | |
| 3565 | if (plr[pnum]._pHitPoints < plr[pnum]._pMaxHP) { |
| 3566 | PlaySfxLoc(LS_FOUNTAIN, object[i]._ox, object[i]._oy); |
| 3567 | plr[pnum]._pHitPoints += 64; |
| 3568 | plr[pnum]._pHPBase += 64; |
| 3569 | if (plr[pnum]._pHitPoints > plr[pnum]._pMaxHP) { |
| 3570 | plr[pnum]._pHitPoints = plr[pnum]._pMaxHP; |
| 3571 | plr[pnum]._pHPBase = plr[pnum]._pMaxHPBase; |
| 3572 | } |
| 3573 | applied = TRUE; |
| 3574 | } else |
| 3575 | PlaySfxLoc(LS_FOUNTAIN, object[i]._ox, object[i]._oy); |
| 3576 | break; |
| 3577 | case OBJ_PURIFYINGFTN: |
| 3578 | if (deltaload) |
| 3579 | return FALSE; |
| 3580 | if (pnum != myplr) |
| 3581 | return FALSE; |
| 3582 | |
| 3583 | if (plr[pnum]._pMana < plr[pnum]._pMaxMana) { |
| 3584 | PlaySfxLoc(LS_FOUNTAIN, object[i]._ox, object[i]._oy); |
| 3585 | |
| 3586 | plr[pnum]._pMana += 64; |
| 3587 | plr[pnum]._pManaBase += 64; |
| 3588 | if (plr[pnum]._pMana > plr[pnum]._pMaxMana) { |
| 3589 | plr[pnum]._pMana = plr[pnum]._pMaxMana; |
| 3590 | plr[pnum]._pManaBase = plr[pnum]._pMaxManaBase; |
| 3591 | } |
| 3592 | |
| 3593 | applied = TRUE; |
| 3594 | } else |
| 3595 | PlaySfxLoc(LS_FOUNTAIN, object[i]._ox, object[i]._oy); |
| 3596 | break; |
| 3597 | case OBJ_MURKYFTN: |
| 3598 | if (object[i]._oSelFlag == 0) |
| 3599 | break; |
| 3600 | if (!deltaload) |
| 3601 | PlaySfxLoc(LS_FOUNTAIN, object[i]._ox, object[i]._oy); |
| 3602 | object[i]._oSelFlag = 0; |
| 3603 | if (deltaload) |
| 3604 | return FALSE; |
| 3605 | AddMissile( |
| 3606 | plr[pnum].WorldX, |
| 3607 | plr[pnum].WorldY, |
| 3608 | plr[pnum].WorldX, |
no test coverage detected