I have three ideas I'm experimenting with to implement pseudo-random. This is the first.
Theory:
A random trigger to set off an auction in the auction channel for a given item sets a property on an individual mob --npc--. Then, should a player have an item and turn that item in, it results in some random reward.
Results:
No rewards yet, but the basics work.
Snippets:
	Code:
	
npc::process
	if (this->MerchantType>0) 
		if (rand()%650==2){
			uint32 someitem = rand()%3500;
			Item_Struct* item = database.GetItem(someitem);
			
			if (item->name!=0) 
			if (rand()%2==0) {
				
				entity_list.Message(0,MT_Auction, "%s auctions, 'WTS %s'", GetName(), item->name);
			} else {
				this->SetItemRequested(someitem);
				entity_list.Message(0,MT_Auction, "%s auctions, 'WTT %s'", GetName(), item->name);
			}
			//else WTB
		}
npc.h
	/****************************************************
	Merchant Role & AutoQuest Gen
	*****************************************************/
	void	SetItemRequested(uint32 item) { ItemRequested=item;}
	uint32	GetItemRequested(){return ItemRequested;}
	uint32	ItemRequested;
client_process.cpp @2236
		QueuePacket(outapp);
									cout << "npc deal ended" << endl;
									InTrade = 0;
									TradeWithEnt = 0;
									delete outapp;
									if (tmp->IsNPC()) { 
										if (TradeList[0]==tmp->CastToNPC()->GetItemRequested()) {
											this->Message(MT_Say, "%s says, 'Thank you for your hard work!'", tmp->GetName());
											
											if (tmp->CastToNPC()->GetMaster() !=0)
												this->Message(MT_Say, "%s says, 'I'm sure %s will look kindly upon this act'", tmp->GetName(), tmp->CastToNPC()->GetMaster());
											//this->PutItemInInventory..
										} else {
											
											this->Message(MT_Say, "%s says, 'This is not what I wanted! No, not at all!'", tmp->GetName());
										}
										CheckQuests(zone->GetShortName(), "%%item%%", tmp->CastToNPC()->GetNPCTypeID(), TradeList[0]); 
									}
 Notes:
You can test this out on Malevolent's Lab, a publicly available server on the EQEmu Network.
--MV