Browse Source

If Merchant or Mender have a secondary command id of hail (9, 1262,1265,1267) then automatically hail npc/spawn

Image 4 years ago
parent
commit
d2882be847

+ 2 - 0
EQ2/source/WorldServer/Commands/Commands.cpp

@@ -2844,6 +2844,7 @@ void Commands::Process(int32 index, EQ2_16BitString* command_parms, Client* clie
 		case COMMAND_REPAIR: {
 			Spawn* spawn = cmdTarget;
 			if (spawn && spawn->GetMerchantType() & MERCHANT_TYPE_REPAIR) {
+				client->SendHailCommand(spawn);
 				client->SetMerchantTransaction(spawn);
 				client->SendRepairList();
 			}
@@ -8395,6 +8396,7 @@ void Commands::Command_SendMerchantWindow(Client* client, Seperator* sep, bool s
 	if(spawn) {
 		client->SetMerchantTransaction(spawn);
 		if (spawn->GetMerchantID() > 0){
+			client->SendHailCommand(spawn);
 			//MerchantFactionMultiplier* multiplier = world.GetMerchantMultiplier(spawn->GetMerchantID());
 			//if(!multiplier || (multiplier && client->GetPlayer()->GetFactions()->GetFactionValue(multiplier->faction_id) >= multiplier->faction_min)){
 			client->SendBuyMerchantList(sell);

+ 20 - 0
EQ2/source/WorldServer/client.cpp

@@ -8450,4 +8450,24 @@ void Client::MakeSpawnChangePacket(map<int32, SpawnData> info_changes, map<int32
 	}
 
 	delete[] tmp;
+}
+
+void Client::SendHailCommand(Spawn* spawn)
+{
+	// hardcoded 'hail' entity commands
+	switch (spawn->secondary_command_list_id)
+	{
+		case 9:
+		case 1262:
+		case 1265:
+		case 1267:
+		{
+			EQ2_16BitString* command = new EQ2_16BitString();
+			command->data = "";
+			command->size = 0;
+			commands.Process(COMMAND_HAIL, command, this, spawn);
+			safe_delete(command);
+			break;
+		}
+	}
 }

+ 2 - 0
EQ2/source/WorldServer/client.h

@@ -401,6 +401,8 @@ public:
 	void MakeSpawnChangePacket(map<int32, SpawnData> info_changes, map<int32, SpawnData> pos_changes, map<int32, SpawnData> vis_changes, int32 info_size, int32 pos_size, int32 vis_size);
 
 	bool IsZonedIn() { return connected_to_zone; }
+
+	void SendHailCommand(Spawn* target);
 private:
 	void    SavePlayerImages();
 	void	SkillChanged(Skill* skill, int16 previous_value, int16 new_value);