Browse Source

temp changes for visual based packets

Kind of messy. will clean up later..  point being visual packets seem to work better this way, prior icons in combat/return home were not present
Image 4 years ago
parent
commit
60c862dc51
2 changed files with 51 additions and 7 deletions
  1. 7 4
      EQ2/source/WorldServer/Spawn.cpp
  2. 44 3
      EQ2/source/WorldServer/client.cpp

+ 7 - 4
EQ2/source/WorldServer/Spawn.cpp

@@ -212,7 +212,7 @@ void Spawn::InitializeVisPacketData(Player* player, PacketStruct* vis_packet) {
 	}
 
 	int8 vis_flags = 0;
-	if (MeetsSpawnAccessRequirements(player)){
+	if (MeetsSpawnAccessRequirements(player)) {
 		if (appearance.attackable == 1)
 			vis_flags += 64; //attackable icon
 		if (appearance.show_level == 1)
@@ -223,15 +223,18 @@ void Spawn::InitializeVisPacketData(Player* player, PacketStruct* vis_packet) {
 			vis_flags += 4;
 		if (appearance.show_command_icon == 1)
 			vis_flags += 2;
+		if (this == player) {
+			vis_flags += 1;
+		}
 	}
-	else{
+	else if (req_quests_override > 0)
+	{
 		//Check to see if there's an override value set
-		if (req_quests_override > 0)
 			vis_flags = req_quests_override & 0xFF;
 	}
-
 	vis_packet->setDataByName("vis_flags", vis_flags);
 
+
 	if (MeetsSpawnAccessRequirements(player))
 		vis_packet->setDataByName("hand_flag", appearance.display_hand_icon);
 	else {

+ 44 - 3
EQ2/source/WorldServer/client.cpp

@@ -8255,6 +8255,8 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
 	map<int32, SpawnData> pos_changes;
 	map<int32, SpawnData> vis_changes;
 
+	map<int32, SpawnData> empty_changes;
+
 	int32 info_size = 0;
 	int32 pos_size = 0;
 	int32 vis_size = 0;
@@ -8268,9 +8270,48 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
 		
 		if (spawn->vis_changed)
 		{
-			EQ2Packet* outapp = spawn->spawn_update_packet(GetPlayer(), GetVersion(), false, false);
-			QueuePacket(outapp);
-			continue;
+			auto vis_change = spawn->spawn_vis_changes_ex(GetPlayer(), GetVersion());
+			if (vis_change) {
+				SpawnData data;
+				data.spawn = spawn;
+				data.data = vis_change;
+				data.size = spawn->vis_packet_size;
+				map<int32, SpawnData> tmp_vis_changes;
+				tmp_vis_changes[index] = data;
+
+				map<int32, SpawnData> tmp_info_changes;
+				map<int32, SpawnData> tmp_pos_changes;
+				int32 tmp_info_size = 0;
+				int32 tmp_pos_size = 0;
+				if (spawn->info_changed) {
+					auto info_change = spawn->spawn_info_changes_ex(GetPlayer(), GetVersion());
+
+					if (info_change) {
+						SpawnData data;
+						data.spawn = spawn;
+						data.data = info_change;
+						data.size = spawn->info_packet_size;
+						tmp_info_size = data.size;
+						tmp_info_changes[index] = data;
+					}
+				}
+
+				if (spawn->position_changed) {
+					auto pos_change = spawn->spawn_pos_changes_ex(GetPlayer(), GetVersion());
+
+					if (pos_change) {
+						SpawnData data;
+						data.spawn = spawn;
+						data.data = pos_change;
+						data.size = spawn->pos_packet_size;
+						tmp_pos_size = data.size;
+						tmp_pos_changes[index] = data;
+					}
+				}
+
+				MakeSpawnChangePacket(tmp_info_changes, tmp_pos_changes, tmp_vis_changes, tmp_info_size, tmp_pos_size, data.size);
+				continue;
+			}
 		}
 
 		if (spawn->info_changed) {