diff --git a/Source/inv.cpp b/Source/inv.cpp index efc79c9a4..da20fae26 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -1313,7 +1313,7 @@ void CheckInvPaste(int pnum, int mx, int my) NetSendCmdChItem(FALSE, INVLOC_HAND_LEFT); plr[pnum].InvBody[INVLOC_HAND_LEFT] = plr[pnum].HoldItem; } - if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_STAFF && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iSpell != 0 && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iCharges > 0) { + if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_STAFF && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iSpell != SPL_NULL && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iCharges > 0) { plr[pnum]._pRSpell = plr[pnum].InvBody[INVLOC_HAND_LEFT]._iSpell; plr[pnum]._pRSplType = RSPLTYPE_CHARGES; force_redraw = 255; diff --git a/Source/items.cpp b/Source/items.cpp index 26e1fbe17..056f0aa9b 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -3618,7 +3618,7 @@ void DoRecharge(int pnum, int cii) } else { pi = &p->InvBody[cii]; } - if (pi->_itype == ITYPE_STAFF && pi->_iSpell) { + if (pi->_itype == ITYPE_STAFF && pi->_iSpell != SPL_NULL) { r = spelldata[pi->_iSpell].sBookLvl; r = random_(38, p->_pLevel / r) + 1; RechargeItem(pi, r); diff --git a/Source/objects.cpp b/Source/objects.cpp index 54d845148..023f5651a 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -3743,7 +3743,7 @@ void OperateShrine(int pnum, int i, int sType) spell = 1; spells = plr[pnum]._pMemSpells; for (j = 0; j < MAX_SPELLS; j++) { - if (spell & spells) + if (spells & spell) cnt++; spell <<= 1; } @@ -3757,7 +3757,7 @@ void OperateShrine(int pnum, int i, int sType) spell <<= 1; } do { - r = random_(0, 37); + r = random_(0, MAX_SPELLS); } while (!(plr[pnum]._pMemSpells & ((__int64)1 << r))); if (plr[pnum]._pSplLvl[r] >= 2) plr[pnum]._pSplLvl[r] -= 2; diff --git a/Source/player.cpp b/Source/player.cpp index 5751a04a3..23a285e7a 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -829,7 +829,7 @@ void CreatePlayer(int pnum, char c) } if (c == PC_SORCERER) { - plr[pnum]._pMemSpells = 1; + plr[pnum]._pMemSpells = (__int64)1 << (SPL_FIREBOLT - 1); } else { plr[pnum]._pMemSpells = 0; }