diff --git a/Source/dapi/Server.cpp b/Source/dapi/Server.cpp index 57854a272..560f1524f 100644 --- a/Source/dapi/Server.cpp +++ b/Source/dapi/Server.cpp @@ -1,6 +1,7 @@ #include #include "Server.h" +#include "qol\stash.h" @@ -995,21 +996,15 @@ void Server::updateGameData() devilution::Item *currentItem; bool useiValue = false; bool shiftValue = false; - bool checkRepairPrice = false; switch (devilution::ActiveStore) { case devilution::TalkID::StorytellerIdentify: case devilution::TalkID::WitchSell: case devilution::TalkID::WitchRecharge: case devilution::TalkID::SmithSell: - storeLoopMax = 48; - currentItem = &devilution::PlayerItems[0]; - useiValue = true; - break; case devilution::TalkID::SmithRepair: - storeLoopMax = 48; + storeLoopMax = devilution::CurrentItemIndex; currentItem = &devilution::PlayerItems[0]; useiValue = true; - checkRepairPrice = true; break; case devilution::TalkID::WitchBuy: storeLoopMax = devilution::NumWitchItemsHf; @@ -1039,16 +1034,6 @@ void Server::updateGameData() } for (int i = 0; i < storeLoopMax; i++) { if (currentItem->_itype != devilution::ItemType::None) { - if (checkRepairPrice) { - int v = 0; - int due = currentItem->_iMaxDur - currentItem->_iDurability; - if (currentItem->_iMagical != devilution::item_quality::ITEM_QUALITY_NORMAL && currentItem->_iIdentified) { - v = 30 * currentItem->_iIvalue * due / (currentItem->_iMaxDur * 100 * 2); - if (v == 0) - continue; - } - } - int itemID = static_cast(data->itemList.size()); @@ -1842,6 +1827,7 @@ void Server::repairItem(int itemID) myPlayer.InvBody[devilution::inv_body_loc::INVLOC_HAND_RIGHT]._iDurability = myPlayer.InvBody[devilution::inv_body_loc::INVLOC_HAND_RIGHT]._iMaxDur; devilution::TakePlrsMoney(price); devilution::StartStore(devilution::OldActiveStore); + return; } myPlayer.InvList[i]._iDurability = myPlayer.InvList[i]._iMaxDur; @@ -2309,6 +2295,7 @@ void Server::identifyStoreItem(int itemID) devilution::PlayerItems[id]._iIdentified = true; devilution::TakePlrsMoney(devilution::PlayerItems[id]._iIvalue); devilution::CalcPlrInv(myPlayer, true); + devilution::StartStore(devilution::OldActiveStore); } }