//o---------------------------------------------------------------------------o //| Function : void restockNPC(CChar *i, bool stockAll) //| Date : Unknown //| Programmer : UOX3 DevTeam //o---------------------------------------------------------------------------o //| Purpose : Restock NPC Vendors //o---------------------------------------------------------------------------o void restockNPC(CChar& i, bool stockAll) { if (!i.IsShop()) return; // if we aren't a shopkeeper, why bother? CItem *ci = i.GetItemAtLayer(IL_SELLCONTAINER); if (ValidateObject(ci)) { CDataList< CItem * > *ciCont = ci->GetContainsList(); for (CItem *c = ciCont->First(); !ciCont->Finished(); c = ciCont->Next()) if (ValidateObject(c)) { if (stockAll) { c->IncAmount(c->GetRestock()); c->SetRestock(0); } else if (c->GetRestock()) { UI16 stockAmt = UOX_MIN(c->GetRestock(), static_cast<UI16>((c->GetRestock() / 2) + 1)); c->IncAmount(stockAmt); c->SetRestock(c->GetRestock() - stockAmt); } if (cwmWorldState->ServerData()->TradeSystemStatus()) { CTownRegion *tReg = calcRegionFromXY(i.GetX(), i.GetY(), i.WorldNumber()); Items->StoreItemRandomValue(c, tReg); } } } }