diff --git a/Source/inv.cpp b/Source/inv.cpp index 0a3a532b9..b5df28535 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -1068,9 +1068,8 @@ void CheckInvPaste(int pnum, int mx, int my) if (r == SLOTXY_CHEST_LAST) { if ((sx & 1) == 0) i -= 14; - if ((sy & 1) == 0) { + if ((sy & 1) == 0) j -= 14; - } } if (r == SLOTXY_INV_LAST && (sy & 1) == 0) j += 14; @@ -1229,7 +1228,11 @@ void CheckInvPaste(int pnum, int mx, int my) case ILOC_ONEHAND: if (r <= SLOTXY_HAND_LEFT_LAST) { if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE) { - if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass != plr[pnum].HoldItem._iClass) { + if ((plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass != plr[pnum].HoldItem._iClass) +#ifdef HELLFIRE + || (plr[pnum]._pClass == PC_BARD && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass == ICLASS_WEAPON && plr[pnum].HoldItem._iClass == ICLASS_WEAPON) +#endif + ) { NetSendCmdChItem(FALSE, INVLOC_HAND_LEFT); plr[pnum].InvBody[INVLOC_HAND_LEFT] = plr[pnum].HoldItem; } else { @@ -1238,7 +1241,11 @@ void CheckInvPaste(int pnum, int mx, int my) } break; } - if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass != plr[pnum].HoldItem._iClass) { + if ((plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass != plr[pnum].HoldItem._iClass) +#ifdef HELLFIRE + || (plr[pnum]._pClass == PC_BARD && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass == ICLASS_WEAPON && plr[pnum].HoldItem._iClass == ICLASS_WEAPON) +#endif + ) { NetSendCmdChItem(FALSE, INVLOC_HAND_LEFT); cn = SwapItem(&plr[pnum].InvBody[INVLOC_HAND_LEFT], &plr[pnum].HoldItem); break; @@ -1249,8 +1256,16 @@ void CheckInvPaste(int pnum, int mx, int my) break; } if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE) { - if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_LEFT]._iLoc != ILOC_TWOHAND) { - if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass != plr[pnum].HoldItem._iClass) { + if ((plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_LEFT]._iLoc != ILOC_TWOHAND) +#ifdef HELLFIRE + || (plr[pnum]._pClass == PC_BARBARIAN && (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SWORD || plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_MACE)) +#endif + ) { + if ((plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE || plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass != plr[pnum].HoldItem._iClass) +#ifdef HELLFIRE + || (plr[pnum]._pClass == PC_BARD && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass == ICLASS_WEAPON && plr[pnum].HoldItem._iClass == ICLASS_WEAPON) +#endif + ) { NetSendCmdChItem(FALSE, INVLOC_HAND_RIGHT); plr[pnum].InvBody[INVLOC_HAND_RIGHT] = plr[pnum].HoldItem; break; @@ -1259,14 +1274,22 @@ void CheckInvPaste(int pnum, int mx, int my) cn = SwapItem(&plr[pnum].InvBody[INVLOC_HAND_LEFT], &plr[pnum].HoldItem); break; } +#ifdef HELLFIRE + NetSendCmdChItem(FALSE, INVLOC_HAND_LEFT); +#else NetSendCmdDelItem(FALSE, INVLOC_HAND_LEFT); NetSendCmdChItem(FALSE, INVLOC_HAND_RIGHT); +#endif SwapItem(&plr[pnum].InvBody[INVLOC_HAND_RIGHT], &plr[pnum].InvBody[INVLOC_HAND_LEFT]); cn = SwapItem(&plr[pnum].InvBody[INVLOC_HAND_RIGHT], &plr[pnum].HoldItem); break; } - if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass == plr[pnum].HoldItem._iClass) { + if ((plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass == plr[pnum].HoldItem._iClass) +#ifdef HELLFIRE + && !(plr[pnum]._pClass == PC_BARD && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass == ICLASS_WEAPON && plr[pnum].HoldItem._iClass == ICLASS_WEAPON) +#endif + ) { NetSendCmdChItem(FALSE, INVLOC_HAND_LEFT); cn = SwapItem(&plr[pnum].InvBody[INVLOC_HAND_LEFT], &plr[pnum].HoldItem); break; @@ -1352,11 +1375,11 @@ void CheckInvPaste(int pnum, int mx, int my) plr[pnum].InvList[il]._iCurs = ICURS_GOLD_LARGE; // BUGFIX: incorrect values here are leftover from beta if (plr[pnum].HoldItem._ivalue >= GOLD_MEDIUM_LIMIT) - cn = 18; + cn = ICURS_GOLD_LARGE + CURSOR_FIRSTITEM; else if (plr[pnum].HoldItem._ivalue <= GOLD_SMALL_LIMIT) - cn = 16; + cn = ICURS_GOLD_SMALL + CURSOR_FIRSTITEM; else - cn = 17; + cn = ICURS_GOLD_MEDIUM + CURSOR_FIRSTITEM; } } else { il = plr[pnum]._pNumInv; @@ -1371,6 +1394,10 @@ void CheckInvPaste(int pnum, int mx, int my) plr[pnum].InvList[il]._iCurs = ICURS_GOLD_SMALL; else plr[pnum].InvList[il]._iCurs = ICURS_GOLD_MEDIUM; +#ifdef HELLFIRE + } else { + plr[pnum].InvList[ii]._iCurs = ICURS_GOLD_LARGE; +#endif } } } else { @@ -1435,11 +1462,11 @@ void CheckInvPaste(int pnum, int mx, int my) // BUGFIX: incorrect values here are leftover from beta if (plr[pnum].HoldItem._ivalue >= GOLD_MEDIUM_LIMIT) - cn = 18; + cn = ICURS_GOLD_LARGE + CURSOR_FIRSTITEM; else if (plr[pnum].HoldItem._ivalue <= GOLD_SMALL_LIMIT) - cn = 16; + cn = ICURS_GOLD_SMALL + CURSOR_FIRSTITEM; else - cn = 17; + cn = ICURS_GOLD_MEDIUM + CURSOR_FIRSTITEM; } } else { plr[pnum]._pGold += plr[pnum].HoldItem._ivalue;