MCPcopy Create free account
hub / github.com/diasurgical/devilution / OperateFountains

Function OperateFountains

Source/objects.cpp:3551–3668  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3549}
3550
3551BOOL 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,

Callers 2

OperateObjectFunction · 0.85
SyncOpObjectFunction · 0.85

Calls 10

SetRndSeedFunction · 0.85
PlaySfxLocFunction · 0.85
AddMissileFunction · 0.85
NetSendCmdParam1Function · 0.85
random_Function · 0.85
ModifyPlrStrFunction · 0.85
ModifyPlrMagFunction · 0.85
ModifyPlrDexFunction · 0.85
ModifyPlrVitFunction · 0.85
CheckStatsFunction · 0.85

Tested by

no test coverage detected