forked from mirror/openmw-tes3mp
Gold Pool implemented for Vendors
It appears that my solution breaks persuasion gold for some reason. I may be wrong. I can’t see where this could be happening as the files I’ve changes should not affect persuasion at all.
This commit is contained in:
parent
7026a0ceee
commit
895748f18d
3 changed files with 11 additions and 14 deletions
|
@ -136,7 +136,7 @@ namespace MWClass
|
|||
|
||||
// TODO: this is not quite correct, in vanilla the merchant's gold pool is not available in his inventory.
|
||||
// (except for gold you gave him)
|
||||
getContainerStore(ptr).add(MWWorld::ContainerStore::sGoldId, ref->mBase->mData.mGold, ptr);
|
||||
//getContainerStore(ptr).add(MWWorld::ContainerStore::sGoldId, ref->mBase->mData.mGold, ptr);
|
||||
|
||||
if (ref->mBase->mFlags & ESM::Creature::Weapon)
|
||||
getInventoryStore(ptr).autoEquip(ptr);
|
||||
|
|
|
@ -367,7 +367,7 @@ namespace MWClass
|
|||
|
||||
// TODO: this is not quite correct, in vanilla the merchant's gold pool is not available in his inventory.
|
||||
// (except for gold you gave him)
|
||||
getContainerStore(ptr).add(MWWorld::ContainerStore::sGoldId, gold, ptr);
|
||||
//getContainerStore(ptr).add(MWWorld::ContainerStore::sGoldId, gold, ptr);
|
||||
|
||||
getInventoryStore(ptr).autoEquip(ptr);
|
||||
|
||||
|
|
|
@ -360,7 +360,8 @@ namespace MWGui
|
|||
if (mCurrentBalance != 0)
|
||||
{
|
||||
addOrRemoveGold(mCurrentBalance, player);
|
||||
addOrRemoveGold(-mCurrentBalance, mPtr);
|
||||
mPtr.getClass().getCreatureStats(mPtr).setGoldPool(
|
||||
mPtr.getClass().getCreatureStats(mPtr).getGoldPool() - mCurrentBalance );
|
||||
}
|
||||
|
||||
updateTradeTime();
|
||||
|
@ -470,28 +471,24 @@ namespace MWGui
|
|||
|
||||
int TradeWindow::getMerchantGold()
|
||||
{
|
||||
int merchantGold = 0;
|
||||
MWWorld::ContainerStore store = mPtr.getClass().getContainerStore(mPtr);
|
||||
for (MWWorld::ContainerStoreIterator it = store.begin(); it != store.end(); ++it)
|
||||
{
|
||||
if (Misc::StringUtils::ciEqual(it->getCellRef().mRefID, MWWorld::ContainerStore::sGoldId))
|
||||
merchantGold += it->getRefData().getCount();
|
||||
}
|
||||
int merchantGold = mPtr.getClass().getCreatureStats(mPtr).getGoldPool();
|
||||
return merchantGold;
|
||||
}
|
||||
|
||||
// Relates to NPC gold reset delay
|
||||
void TradeWindow::checkTradeTime()
|
||||
{
|
||||
MWWorld::ContainerStore store = mPtr.getClass().getContainerStore(mPtr);
|
||||
const MWMechanics::CreatureStats &sellerStats = mPtr.getClass().getCreatureStats(mPtr);
|
||||
MWMechanics::CreatureStats &sellerStats = mPtr.getClass().getCreatureStats(mPtr);
|
||||
double delay = boost::lexical_cast<double>(MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fBarterGoldResetDelay")->getInt());
|
||||
|
||||
// if time stamp longer than gold reset delay, reset gold.
|
||||
if (MWBase::Environment::get().getWorld()->getTimeStamp() >= sellerStats.getTradeTime() + delay)
|
||||
{
|
||||
addOrRemoveGold(-store.count(MWWorld::ContainerStore::sGoldId), mPtr);
|
||||
addOrRemoveGold(+sellerStats.getGoldPool(), mPtr);
|
||||
// reset gold to the base gold
|
||||
if ( mPtr.getClass().isNpc() )
|
||||
sellerStats.setGoldPool(mPtr.get<ESM::NPC>()->mBase->mNpdt52.mGold);
|
||||
else
|
||||
sellerStats.setGoldPool(mPtr.get<ESM::Creature>()->mBase->mData.mGold);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue