diff --git a/Source/player.cpp b/Source/player.cpp index 8dc0627b5..327a607db 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -536,7 +536,7 @@ void StartSpell(int pnum, Direction d, int cx, int cy) player.spellLevel = GetSpellLevel(pnum, player._pSpell); } -void RespawnDeadItem(Item &itm, Point target) +void RespawnDeadItem(Item &&itm, Point target) { if (ActiveItemCount >= MAXITEMS) return; @@ -548,17 +548,17 @@ void RespawnDeadItem(Item &itm, Point target) Items[ii] = itm; Items[ii].position = target; RespawnItem(Items[ii], true); + NetSendCmdPItem(false, CMD_RESPAWNITEM, target, Items[ii]); } -void DeadItem(Player &player, Item &itm, Displacement direction) +void DeadItem(Player &player, Item &&itm, Displacement direction) { if (itm.isEmpty()) return; Point target = player.position.tile + direction; if (direction != Displacement { 0, 0 } && ItemSpaceOk(target)) { - RespawnDeadItem(itm, target); - NetSendCmdPItem(false, CMD_RESPAWNITEM, target, itm); + RespawnDeadItem(std::move(itm), target); return; } @@ -567,8 +567,7 @@ void DeadItem(Player &player, Item &itm, Displacement direction) for (int i = -k; i <= k; i++) { Point next = player.position.tile + Displacement { i, j }; if (ItemSpaceOk(next)) { - RespawnDeadItem(itm, next); - NetSendCmdPItem(false, CMD_RESPAWNITEM, next, itm); + RespawnDeadItem(std::move(itm), next); return; } } @@ -592,12 +591,12 @@ int DropGold(Player &player, int amount, bool skipFullStacks) gold._ivalue = amount; item._ivalue -= amount; SetPlrHandGoldCurs(gold); - DeadItem(player, gold, { 0, 0 }); + DeadItem(player, std::move(gold), { 0, 0 }); return 0; } amount -= item._ivalue; - DeadItem(player, item, { 0, 0 }); + DeadItem(player, std::move(item), { 0, 0 }); player.RemoveInvItem(i); i = -1; } @@ -3143,7 +3142,7 @@ StartPlayerKill(int pnum, int earflag) drawhpflag = true; if (pcurs >= CURSOR_FIRSTITEM) { - DeadItem(player, player.HoldItem, { 0, 0 }); + DeadItem(player, std::move(player.HoldItem), { 0, 0 }); player.HoldItem._itype = ItemType::None; NewCursor(CURSOR_HAND); } @@ -3175,13 +3174,13 @@ StartPlayerKill(int pnum, int earflag) ear._ivalue = player._pLevel; if (FindGetItem(ear._iSeed, IDI_EAR, ear._iCreateInfo) == -1) { - DeadItem(player, ear, { 0, 0 }); + DeadItem(player, std::move(ear), { 0, 0 }); } } else { Direction pdd = player._pdir; for (auto &item : player.InvBody) { pdd = Left(pdd); - DeadItem(player, item, Displacement(pdd)); + DeadItem(player, std::move(item), Displacement(pdd)); item._itype = ItemType::None; } @@ -3206,7 +3205,7 @@ void StripTopGold(Player &player) SetPlrHandGoldCurs(excessGold); item._ivalue = MaxGold; if (!GoldAutoPlace(player, excessGold)) { - DeadItem(player, excessGold, { 0, 0 }); + DeadItem(player, std::move(excessGold), { 0, 0 }); } } }