hey Windcatcher,
thanks for the detailed report... good to see your still lurking around somewhere.
The code which calls FinishTrade() allready takes care of calling Reset right after both finishes, so that code is fine, the only thing which needed adjusting was the code to trade with NPCs, which needed a Reset after the finish. Then you can kill the Reset in Finish Trade:
Code:
Index: trading.cpp
==================================================================
--- trading.cpp (revision 483)
+++ trading.cpp (working copy)
@@ -428,8 +428,7 @@
// Money @merth: look into how NPC's receive cash
this->AddMoneyToPP(other->trade->cp, other->trade->sp, other->trade->gp,
other->trade->pp, true);
- // Clear trade inventory
- trade->Reset();
+ //Do not reset the trade here, done by the caller.
}
bool Client::CheckTradeLoreConflict(Client* other)
Index: client_packet.cpp
===================================================================
--- client_packet.cpp (revision 483)
+++ client_packet.cpp (working copy)
@@ -2966,10 +2967,12 @@
}
}
else if(with){
+ //trading with an NPC
EQZonePacket* outapp = new EQZonePacket(OP_FinishTrade,0);
QueuePacket(outapp);
safe_delete(outapp);
FinishTrade(with->CastToNPC());
+ trade->Reset();
}
return;