diff --git a/apps/openmw/mwgui/merchantrepair.cpp b/apps/openmw/mwgui/merchantrepair.cpp index 282c0e4ea..16f9270aa 100644 --- a/apps/openmw/mwgui/merchantrepair.cpp +++ b/apps/openmw/mwgui/merchantrepair.cpp @@ -6,6 +6,18 @@ #include #include +/* + Start of tes3mp addition + + Include additional headers for multiplayer purposes +*/ +#include "../mwmp/Main.hpp" +#include "../mwmp/Networking.hpp" +#include "../mwmp/ObjectList.hpp" +/* + End of tes3mp addition +*/ + #include "../mwbase/world.hpp" #include "../mwbase/environment.hpp" #include "../mwbase/mechanicsmanager.hpp" @@ -135,7 +147,23 @@ void MerchantRepair::onRepairButtonClick(MyGUI::Widget *sender) // add gold to NPC trading gold pool MWMechanics::CreatureStats& actorStats = mActor.getClass().getCreatureStats(mActor); - actorStats.setGoldPool(actorStats.getGoldPool() + price); + + /* + Start of tes3mp change (major) + + Don't unilaterally change the merchant's gold pool on our client and instead let the server do it + */ + //actorStats.setGoldPool(actorStats.getGoldPool() + price); + + mwmp::ObjectList* objectList = mwmp::Main::get().getNetworking()->getObjectList(); + objectList->reset(); + objectList->packetOrigin = mwmp::CLIENT_GAMEPLAY; + objectList->addObjectMiscellaneous(mActor, actorStats.getGoldPool() + price, actorStats.getLastRestockTime().getHour(), + actorStats.getLastRestockTime().getDay()); + objectList->sendObjectMiscellaneous(); + /* + End of tes3mp change (major) + */ setPtr(mActor); } diff --git a/apps/openmw/mwgui/spellbuyingwindow.cpp b/apps/openmw/mwgui/spellbuyingwindow.cpp index 53abc5331..5440bc92f 100644 --- a/apps/openmw/mwgui/spellbuyingwindow.cpp +++ b/apps/openmw/mwgui/spellbuyingwindow.cpp @@ -10,7 +10,9 @@ Include additional headers for multiplayer purposes */ #include "../mwmp/Main.hpp" +#include "../mwmp/Networking.hpp" #include "../mwmp/LocalPlayer.hpp" +#include "../mwmp/ObjectList.hpp" /* End of tes3mp addition */ @@ -182,7 +184,23 @@ namespace MWGui // add gold to NPC trading gold pool MWMechanics::CreatureStats& npcStats = mPtr.getClass().getCreatureStats(mPtr); - npcStats.setGoldPool(npcStats.getGoldPool() + price); + + /* + Start of tes3mp change (major) + + Don't unilaterally change the merchant's gold pool on our client and instead let the server do it + */ + //npcStats.setGoldPool(npcStats.getGoldPool() + price); + + mwmp::ObjectList* objectList = mwmp::Main::get().getNetworking()->getObjectList(); + objectList->reset(); + objectList->packetOrigin = mwmp::CLIENT_GAMEPLAY; + objectList->addObjectMiscellaneous(mPtr, npcStats.getGoldPool() + price, npcStats.getLastRestockTime().getHour(), + npcStats.getLastRestockTime().getDay()); + objectList->sendObjectMiscellaneous(); + /* + End of tes3mp change (major) + */ setPtr(mPtr, mSpellsView->getViewOffset().top); diff --git a/apps/openmw/mwgui/spellcreationdialog.cpp b/apps/openmw/mwgui/spellcreationdialog.cpp index 9b3e34a2a..883615163 100644 --- a/apps/openmw/mwgui/spellcreationdialog.cpp +++ b/apps/openmw/mwgui/spellcreationdialog.cpp @@ -419,7 +419,23 @@ namespace MWGui // add gold to NPC trading gold pool MWMechanics::CreatureStats& npcStats = mPtr.getClass().getCreatureStats(mPtr); - npcStats.setGoldPool(npcStats.getGoldPool() + price); + + /* + Start of tes3mp change (major) + + Don't unilaterally change the merchant's gold pool on our client and instead let the server do it + */ + //npcStats.setGoldPool(npcStats.getGoldPool() + price); + + mwmp::ObjectList* objectList = mwmp::Main::get().getNetworking()->getObjectList(); + objectList->reset(); + objectList->packetOrigin = mwmp::CLIENT_GAMEPLAY; + objectList->addObjectMiscellaneous(mPtr, npcStats.getGoldPool() + price, npcStats.getLastRestockTime().getHour(), + npcStats.getLastRestockTime().getDay()); + objectList->sendObjectMiscellaneous(); + /* + End of tes3mp change (major) + */ MWBase::Environment::get().getWindowManager()->playSound ("Mysticism Hit"); diff --git a/apps/openmw/mwgui/trainingwindow.cpp b/apps/openmw/mwgui/trainingwindow.cpp index 913ea1024..186e4cb01 100644 --- a/apps/openmw/mwgui/trainingwindow.cpp +++ b/apps/openmw/mwgui/trainingwindow.cpp @@ -2,6 +2,18 @@ #include +/* + Start of tes3mp addition + + Include additional headers for multiplayer purposes +*/ +#include "../mwmp/Main.hpp" +#include "../mwmp/Networking.hpp" +#include "../mwmp/ObjectList.hpp" +/* + End of tes3mp addition +*/ + #include "../mwbase/windowmanager.hpp" #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -166,7 +178,23 @@ namespace MWGui // add gold to NPC trading gold pool MWMechanics::NpcStats& npcStats = mPtr.getClass().getNpcStats(mPtr); - npcStats.setGoldPool(npcStats.getGoldPool() + price); + + /* + Start of tes3mp change (major) + + Don't unilaterally change the merchant's gold pool on our client and instead let the server do it + */ + //npcStats.setGoldPool(npcStats.getGoldPool() + price); + + mwmp::ObjectList* objectList = mwmp::Main::get().getNetworking()->getObjectList(); + objectList->reset(); + objectList->packetOrigin = mwmp::CLIENT_GAMEPLAY; + objectList->addObjectMiscellaneous(mPtr, npcStats.getGoldPool() + price, npcStats.getLastRestockTime().getHour(), + npcStats.getLastRestockTime().getDay()); + objectList->sendObjectMiscellaneous(); + /* + End of tes3mp change (major) + */ // advance time MWBase::Environment::get().getMechanicsManager()->rest(2, false); diff --git a/apps/openmw/mwgui/travelwindow.cpp b/apps/openmw/mwgui/travelwindow.cpp index 46bc661ae..daf4e8764 100644 --- a/apps/openmw/mwgui/travelwindow.cpp +++ b/apps/openmw/mwgui/travelwindow.cpp @@ -6,6 +6,18 @@ #include +/* + Start of tes3mp addition + + Include additional headers for multiplayer purposes +*/ +#include "../mwmp/Main.hpp" +#include "../mwmp/Networking.hpp" +#include "../mwmp/Worldstate.hpp" +/* + End of tes3mp addition +*/ + #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" #include "../mwbase/windowmanager.hpp" @@ -160,7 +172,23 @@ namespace MWGui // add gold to NPC trading gold pool MWMechanics::CreatureStats& npcStats = mPtr.getClass().getCreatureStats(mPtr); - npcStats.setGoldPool(npcStats.getGoldPool() + price); + + /* + Start of tes3mp change (major) + + Don't unilaterally change the merchant's gold pool on our client and instead let the server do it + */ + //npcStats.setGoldPool(npcStats.getGoldPool() + price); + + mwmp::ObjectList* objectList = mwmp::Main::get().getNetworking()->getObjectList(); + objectList->reset(); + objectList->packetOrigin = mwmp::CLIENT_GAMEPLAY; + objectList->addObjectMiscellaneous(mPtr, npcStats.getGoldPool() + price, npcStats.getLastRestockTime().getHour(), + npcStats.getLastRestockTime().getDay()); + objectList->sendObjectMiscellaneous(); + /* + End of tes3mp change (major) + */ MWBase::Environment::get().getWindowManager()->fadeScreenOut(1); ESM::Position pos = *_sender->getUserData();