Browse Source

Merge branch 'master' of http://cutpon.com:3000/devn00b/EQ2EMu

root 4 years ago
parent
commit
e506d5a3dc

+ 2 - 1
EQ2/source/WorldServer/Player.cpp

@@ -488,6 +488,7 @@ PacketStruct* PlayerInfo::serialize2(int16 version){
 	//		packet->setDataByName("unknown7", 257, i);
 		//packet->setDataByName("unknown21", info_struct->rain, 2);
 		packet->setDataByName("rain", info_struct->rain);
+		packet->setDataByName("rain2", info_struct->wind); //-102.24);
 		/*packet->setDataByName("unknown22", 3, 4);
 		packet->setDataByName("unknown23", 3, 161);
 		packet->setDataByName("unknown20", 103);
@@ -510,7 +511,7 @@ PacketStruct* PlayerInfo::serialize2(int16 version){
 		packet->setDataByName("unknown20b", 255, 2);
 		packet->setDataByName("unknown20", 50, 75);
 		*/
-		packet->setDataByName("rain2", -102.24);
+		//packet->setDataByName("rain2", -102.24);
 		for(int i=0;i<45;i++){
 			if(i < 30){
 				packet->setSubstructDataByName("maintained_effects", "name", info_struct->maintained_effects[i].name, i, 0);

+ 20 - 14
EQ2/source/WorldServer/Spawn.cpp

@@ -179,7 +179,7 @@ void Spawn::InitializeHeaderPacketData(Player* player, PacketStruct* header, int
 	}
 
 	header->setDataByName("spawn_id", player->GetIDWithPlayerSpawn(this));
-	header->setDataByName("crc", id);
+	header->setDataByName("crc", 1);
 	header->setDataByName("time_stamp", Timer::GetCurrentTime2());
 }
 
@@ -251,7 +251,7 @@ void Spawn::InitializeFooterPacketData(Player* player, PacketStruct* footer) {
 		if (widget->GetMultiFloorLift()) {
 			footer->setDataByName("widget_x", widget->GetX());
 			footer->setDataByName("widget_y", widget->GetY());
-			footer->setDataByName("widget_z", widget->GetZ());
+			footer->setDataByName("widget_z", widget->GetZ());	
 		}
 		else {
 			footer->setDataByName("widget_x", widget->GetWidgetX());
@@ -1568,23 +1568,23 @@ void Spawn::InitializePosPacketData(Player* player, PacketStruct* packet, bool b
 		packet->setDataByName("pos_heading2", appearance.pos.Dir2);
 	}
 
-	packet->setDataByName("pos_collision_radius", appearance.pos.collision_radius > 0 ? appearance.pos.collision_radius : 32);
 	if (version <= 910) {
+		packet->setDataByName("pos_collision_radius", appearance.pos.collision_radius > 0 ? appearance.pos.collision_radius : 32);
 		packet->setDataByName("pos_size", size > 0 ? size : 32);
 		packet->setDataByName("pos_size_multiplier", 32); //32 is normal
 	}
 	else {
-		if (IsPlayer()) {
-			if (this != player)
-				packet->setDataByName("pos_size", 49152);
+			if (size == 0)
+				size = 32;
+			packet->setDataByName("size", 1);
+			packet->setDataByName("pos_collision_radius", appearance.pos.collision_radius > 0 ? appearance.pos.collision_radius : 32);
 
-			packet->setDataByName("pos_size_ratio", 1);
-			packet->setDataByName("pos_size_multiplier_ratio", 1); // used for growth with players
-		}
-		else {
-			packet->setDataByName("pos_size_ratio", size > 0 ? (((float)size) / 32) : 1);
-			packet->setDataByName("pos_size_multiplier_ratio", 1);
-		}
+			packet->setDataByName("pos_size", 1.0f);
+
+			if (!IsPlayer())
+				packet->setDataByName("pos_size_ratio", size > 0 ? (((float)size) / 32) : 1);
+			else
+				packet->setDataByName("pos_size_ratio", 1.0f);
 	}
 	packet->setDataByName("pos_state", appearance.pos.state);
 
@@ -1691,15 +1691,21 @@ void Spawn::InitializePosPacketData(Player* player, PacketStruct* packet, bool b
 
 	if (!IsPlayer())
 		packet->setDataByName("pos_movement_mode", 2);
-
+	
 	if(version <= 910)
 		packet->setDataByName("pos_unknown10", 0xFFFF, 1);
+	else if (version >= 1119)
+			packet->setDataByName("face_actor_id", 0xFFFFFFFF);
 	else
 		packet->setDataByName("pos_unknown10", 0xFFFF);
+
 	if(version <= 910)
 		packet->setDataByName("pos_unknown10", 0xFFFF, 2);
+	else if (version >= 1119)
+		packet->setDataByName("face_actor_id", 0xFFFFFFFF);
 	else
 		packet->setDataByName("pos_unknown10", 0XFFFF, 1);
+
 	packet->setDataByName("pos_pitch1", appearance.pos.Pitch1);
 	packet->setDataByName("pos_pitch2", appearance.pos.Pitch2);
 	packet->setDataByName("pos_roll", appearance.pos.Roll);

+ 2 - 2
EQ2/source/WorldServer/client.cpp

@@ -8296,7 +8296,7 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
 					}
 				}
 
-				if (spawn->position_changed) {
+			/*	if (spawn->position_changed) {
 					auto pos_change = spawn->spawn_pos_changes_ex(GetPlayer(), GetVersion());
 
 					if (pos_change) {
@@ -8307,7 +8307,7 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
 						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;

+ 4 - 0
EQ2/source/WorldServer/zoneserver.h

@@ -605,6 +605,10 @@ public:
 	void ProcessSpawnConditional(int8 condition);
 
 	void SetSpawnStructs(Client* client);
+
+	bool IsLoading() {
+		return LoadingData;
+	}
 private:
 	/* Private Functions */
 	void	AddTransporter(LocationTransportDestination* loc);

+ 0 - 6
EQ2/source/common/EQStream.cpp

@@ -1025,12 +1025,6 @@ void EQStream::AckPackets(uint16 seq)
 	SeqOrder ord = CompareSequence(SequencedBase, seq);
 	if (ord == SeqInOrder) {
 		//they are not acking anything new...
-
-		uint16 index = seq - SequencedBase;
-		if (SequencedQueue.size() > 0 && index > -1 && index < SequencedQueue.size() && seq == SequencedQueue[index]->sequence)
-		{
-			SequencedQueue[index]->acked = true;
-		}
 		LogWrite(PACKET__DEBUG, 9, "Packet",  "Received an ack with no window advancement (seq %u)", seq);
 	}
 	else if (ord == SeqPast) {

+ 2 - 1
EQ2/source/common/Mutex.cpp

@@ -105,7 +105,8 @@ void Mutex::readlock(const char* function, int32 line) {
 					LogWrite(MUTEX__ERROR, 0, "Mutex", "%s, number of locks = %u", itr->first.c_str(), itr->second);
 			}
 			CSStack.unlock();
-			return;
+			i = 0;
+			continue;
 		}
 		i++;
 #endif

BIN
server/EQ2Login__Debug64.exe


BIN
server/EQ2World__Debug_x64.exe


+ 124 - 84
server/SpawnStructs.xml

@@ -30,6 +30,8 @@
 <Data ElementName="command_list_array" Type="Array" ArraySizeVariable="command_list">
 	<Data ElementName="command_list_name" Type="EQ2_16Bit_String" />
 	<Data ElementName="command_list_max_distance" Type="float" Size="1" />
+	<Data ElementName="command_list_has_error_text" Type="int8" Size="1" />
+	<Data ElementName="command_list_unknown" Type="int8" Size="1" />
 	<Data ElementName="command_list_error" Type="EQ2_16Bit_String" Size="1" />
 	<Data ElementName="command_list_command" Type="EQ2_16Bit_String" />
 </Data>
@@ -213,8 +215,8 @@
 <Data ElementName="pos_heading1" Type="sint16" Size="1" />
 <Data ElementName="pos_heading2" Type="sint16" Size="1" />
 <Data ElementName="pos_speed" Type="int16" Size="1" />
-<Data ElementName="pos_state" Type="int16" Size="1" />
-<Data ElementName="pos_unknown2" Type="int8" Size="6" />
+<Data ElementName="pos_state" Type="int32" Size="1" />
+<Data ElementName="pos_state2" Type="int32" Size="1" />
 <Data ElementName="pos_next_x" Type="float" Size="1" />
 <Data ElementName="pos_next_y" Type="float" Size="1" />
 <Data ElementName="pos_next_z" Type="float" Size="1" />
@@ -223,19 +225,27 @@
 <Data ElementName="pos_z3" Type="float" Size="1" />
 <Data ElementName="pos_movement_mode" Type="int8" Size="1" />
 <Data ElementName="pos_unknown3b" Type="int8" Size="1" />
-<Data ElementName="pos_unknown4" Type="int16" Size="3" />
+<Data ElementName="desired_heading" Type="int16" Size="1" />
+<Data ElementName="speed_modifier" Type="int16" Size="1" />
+<Data ElementName="swim_speed_modifier" Type="int16" Size="1" />
 <Data ElementName="pos_move_type" Type="int16" Size="1" />
-<Data ElementName="pos_unknown6" Type="int16" Size="3" />
-<Data ElementName="pos_side_speed" Type="int16" Size="1" />
-<Data ElementName="pos_unknown6" Type="int16" Size="1" />
+<Data ElementName="desired_strafe_speed" Type="int16" Size="1" />
+<Data ElementName="desired_vert_speed" Type="int16" Size="1" />
+<Data ElementName="unknown_speed_3" Type="int16" Size="1" />
+<Data ElementName="pos_side_speed" Type="int16" Size="1" /> <!-- desired_roll -->
+<Data ElementName="pos_unknown6" Type="int16" Size="1" /> <!-- desired roll velocity -->
 <Data ElementName="pos_pitch1" Type="sint16" />
-<Data ElementName="pos_unknown7" Type="int16" Size="4" />
+<Data ElementName="pos_pitch_velocity" Type="int16" Size="1" />
+<Data ElementName="pos_base_loc_x" Type="int16" Size="1" />
+<Data ElementName="pos_base_loc_y" Type="int16" Size="1" />
+<Data ElementName="pos_base_loc_z" Type="int16" Size="1" />
 <Data ElementName="pos_pitch2" Type="sint16" />
 <Data ElementName="pos_collision_radius" Type="int16" Size="1" />
-<Data ElementName="pos_size" Type="int16" Size="1" />
+<Data ElementName="size" Type="int16" Size="1" />
+<Data ElementName="pos_size" Type="float" Size="1" />
 <Data ElementName="pos_size_ratio" Type="float" Size="1" />
-<Data ElementName="pos_size_multiplier_ratio" Type="float" Size="1" />
-<Data ElementName="pos_unknown10" Type="int16" Size="3" />
+<Data ElementName="face_actor_id" Type="int32" Size="1" />
+<Data ElementName="actor_stop_range" Type="int16" Size="1" />
 <Data ElementName="pos_roll" Type="sint16" />
 <Data ElementName="unknown12" Type="int16" Size="2" />
 </Struct>
@@ -1812,73 +1822,54 @@
 <Data ElementName="model_type" Type="int32" Size="1" />
 <Data ElementName="soga_model_type" Type="int32" Size="1" />
 <Data ElementName="equipment_types" Type="int32" Size="25" />
-<Data ElementName="unknown7a" Type="int16" Size="2" />
-<Data ElementName="unknown7aa" Type="int16" Size="2" />
-<Data ElementName="hair_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown30" Type="int16" Size="1" />
-<Data ElementName="facial_hair_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown30a" Type="int16" Size="1" />
-<Data ElementName="wing_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown30b" Type="int16" Size="1" />
-<Data ElementName="chest_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown30c" Type="int16" Size="1" />
-<Data ElementName="legs_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown_new_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown30d" Type="int16" Size="1" />
-<Data ElementName="unknown30e" Type="int16" Size="1" />
-<Data ElementName="soga_hair_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown30f" Type="int16" Size="1" />
-<Data ElementName="soga_facial_hair_type_id" Type="int16" Size="1" />
-<Data ElementName="unknown30g" Type="int16" Size="1" />
-<Data ElementName="mount_type" Type="int32" />
+<Data ElementName="unknownType26" Type="int32" Size="1" />
+<Data ElementName="unknownType27" Type="int32" Size="1" />
+<Data ElementName="hair_type_id" Type="int32" Size="1" />
+<Data ElementName="facial_hair_type_id" Type="int32" Size="1" />
+<Data ElementName="wing_type_id" Type="int32" Size="1" />
+<Data ElementName="chest_type_id" Type="int32" Size="1" />
+<Data ElementName="legs_type_id" Type="int32" Size="1" />
+<Data ElementName="unknown_new_type_id" Type="int32" Size="1" />
+<Data ElementName="soga_hair_type_id" Type="int32" Size="1" />
+<Data ElementName="soga_facial_hair_type_id" Type="int32" Size="1" />
+<Data ElementName="mount_type" Type="int32" size="1"/>
 <Data ElementName="combat_voice" Type="int32" Size="1" />
 <Data ElementName="emote_voice" Type="int32" Size="1" />
-<Data ElementName="unknown17" Type="int32" Size="1" />
+<Data ElementName="unknown17" Type="int8" Size="4" />
 <Data ElementName="visual_flag" Type="int8" Size="1" />
 <Data ElementName="interaction_flag" Type="int8" Size="1" />
 <Data ElementName="unknown60055" Type="int8" Size="18" />
 <Data ElementName="equipment_colors" Type="EQ2_Color" Size="25" />
-<Data ElementName="unknown7b" Type="EQ2_Color" Size="2" />
+<Data ElementName="unknownType26Color" Type="EQ2_Color" Size="1" />
+<Data ElementName="unknownType27Color" Type="EQ2_Color" Size="1" />
 <Data ElementName="hair_type_color" Type="EQ2_Color" />
 <Data ElementName="hair_face_color" Type="EQ2_Color" />
 <Data ElementName="wing_color1" Type="EQ2_Color" />
-<Data ElementName="unknown10" Type="EQ2_Color" Size="3" />
+<Data ElementName="chest_type_color" Type="EQ2_Color" Size="1" />
+<Data ElementName="legs_type_color" Type="EQ2_Color" Size="1" />
+<Data ElementName="unknown_new_type_color" Type="EQ2_Color" Size="1" />
 <Data ElementName="equipment_highlights" Type="EQ2_Color" Size="25" />
-<Data ElementName="unknown7c" Type="EQ2_Color" Size="2" />
+<Data ElementName="unknownType26Highlight" Type="EQ2_Color" Size="1" />
+<Data ElementName="unknownType27Highlight" Type="EQ2_Color" Size="1" />
 <Data ElementName="hair_type_highlight_color" Type="EQ2_Color" />
 <Data ElementName="hair_face_highlight_color" Type="EQ2_Color" />
 <Data ElementName="wing_color2" Type="EQ2_Color" />
-<Data ElementName="unknown11" Type="EQ2_Color" Size="3" />
+<Data ElementName="chest_type_highlight" Type="EQ2_Color" />
+<Data ElementName="legs_type_highlight" Type="EQ2_Color" />
+<Data ElementName="unknown_new_type_highlight" Type="EQ2_Color" />
 <Data ElementName="soga_hair_type_color" Type="EQ2_Color" />
 <Data ElementName="soga_hair_type_highlight_color" Type="EQ2_Color" />
 <Data ElementName="soga_hair_face_color" Type="EQ2_Color" />
 <Data ElementName="soga_hair_face_highlight_color" Type="EQ2_Color" />
 <Data ElementName="skin_color" Type="EQ2_Color" Size="1" />
 <Data ElementName="eye_color" Type="EQ2_Color" Size="1" />
+<Data ElementName="kunark_unknown_color1" Type="EQ2_Color" />
 <Data ElementName="soga_eye_color" Type="EQ2_Color" />
 <Data ElementName="soga_skin_color" Type="EQ2_Color" />
-<Data ElementName="kunark_unknown_color1" Type="EQ2_Color" />
 <Data ElementName="kunark_unknown_color2" Type="EQ2_Color" />
-<Data ElementName="unknown12" Type="EQ2_Color" Size="1" />
-<Data ElementName="eye_type" Type="sint8" Size="3" />
-<Data ElementName="ear_type" Type="sint8" Size="3" />
-<Data ElementName="eye_brow_type" Type="sint8" Size="3" />
-<Data ElementName="cheek_type" Type="sint8" Size="3" />
-<Data ElementName="lip_type" Type="sint8" Size="3" />
-<Data ElementName="chin_type" Type="sint8" Size="3" />
-<Data ElementName="nose_type" Type="sint8" Size="3" />
-<Data ElementName="body_size" Type="sint8" Size="1" />
-<Data ElementName="body_size_unknown" Type="sint8" Size="1" />
-<Data ElementName="unknown14a" Type="int8" Size="3" />
-<Data ElementName="soga_eye_type" Type="sint8" Size="3" />
-<Data ElementName="soga_ear_type" Type="sint8" Size="3" />
-<Data ElementName="soga_eye_brow_type" Type="sint8" Size="3" />
-<Data ElementName="soga_cheek_type" Type="sint8" Size="3" />
-<Data ElementName="soga_lip_type" Type="sint8" Size="3" />
-<Data ElementName="soga_chin_type" Type="sint8" Size="3" />
-<Data ElementName="soga_nose_type" Type="sint8" Size="3" />
-<Data ElementName="unknown14b" Type="int8" Size="2" />
-<Data ElementName="mount_color" Type="EQ2_Color" /><!--index 464-->
+<Data ElementName="slider_bytes" Type="int8" Size="26" />
+<Data ElementName="soga_slider_bytes" Type="int8" Size="26" />
+<Data ElementName="mount_color" Type="EQ2_Color" />
 <Data ElementName="mount_saddle_color" Type="EQ2_Color" />
 <Data ElementName="hair_color1" Type="EQ2_Color" />
 <Data ElementName="hair_color2" Type="EQ2_Color" />
@@ -1896,23 +1887,23 @@
 <Data ElementName="follow_target" Type="int32" Size="1" /> 
 <Data ElementName="size_unknown" Type="int32" />
 <Data ElementName="unknown3b" Type="int8" Size="4" />
-<Data ElementName="spawn_type" Type="int8" Size="1" />
+<Data ElementName="spawn_type" Type="int8" />
 <Data ElementName="icon" Type="int8" Size="1" />
 <Data ElementName="activity_status" Type="int32" Size="1" />
-<Data ElementName="unknownpk1" Type="int8" Size="2" />
+<Data ElementName="unknownpk2" Type="int8" Size="2" />
 <Data ElementName="activity_timer" Type="int32" Size="1" />
 <Data ElementName="unknown600554" Type="int8" Size="4" />
 <Data ElementName="hp_remaining" Type="int32" Size="1" />
 <Data ElementName="power_percent" Type="int32" Size="1" />
-<Data ElementName="unknown600553" Type="int8" Size="4" />
-<Data ElementName="size_mod" Type="int8" Size="1" />
-<Data ElementName="size_type" Type="int8" Size="1" />
-<Data ElementName="unknown600553b" Type="int8" Size="3" />
+<Data ElementName="unknown600553" Type="float" Size="1" />
+<Data ElementName="size_mod" Type="int32" Size="1" />
+<Data ElementName="unknown600553b" Type="int8" Size="1" />
 <Data ElementName="unknown4" Type="int8" />
 <Data ElementName="level" Type="int8" />
 <Data ElementName="unknown5" Type="int8" Size="1" />
-<Data ElementName="heroic_flag" Type="int8" Size="1" />
-<Data ElementName="unknown7" Type="int32" Size="1" />
+<Data ElementName="heroic_flag" Type="int16" Size="1" />
+<Data ElementName="unknown7b" Type="int8" Size="1" />
+<Data ElementName="unknown7" Type="int16" Size="1" />
 <Data ElementName="race" Type="int8" Size="1" />
 <Data ElementName="gender" Type="int8" Size="1" />
 <Data ElementName="class" Type="int8" Size="1" />
@@ -2058,16 +2049,17 @@
 <Data ElementName="guild" Type="EQ2_16Bit_String" Size="1" />
 <Data ElementName="is_transport" Type="int8" Size="1" />
 <Data ElementName="transport_array" Type="Array" ArraySizeVariable="is_transport">
-	<Data ElementName="unknown_0" Type="int32" Size="1" />
-	<Data ElementName="unknown_1" Type="int32" Size="1" />
+	<Data ElementName="version_0" Type="int32" Size="1" />
+	<Data ElementName="lerptype_0" Type="int32" Size="1" />
 	<Data ElementName="num_coords1" Type="int32" Size="1" />
 	<Data ElementName="movement_array" Type="Array" ArraySizeVariable="num_coords1">
 		<Data ElementName="x" Type="float" />
 		<Data ElementName="y" Type="float" />
 		<Data ElementName="z" Type="float" />
-		<Data ElementName="heading" Type="float" />
+		<Data ElementName="heading" Type="float" /> <!-- delta_time -->
 	</Data>
-	<Data ElementName="unknown_m2" Type="int32" Size="2" />
+	<Data ElementName="version_1" Type="int32" Size="1" />
+	<Data ElementName="lerptype_1" Type="int32" Size="1" />
 	<Data ElementName="num_coords2" Type="int32" Size="1" />
 	<Data ElementName="coord_array" Type="Array" ArraySizeVariable="num_coords2">
 		<Data ElementName="x_2" Type="float" />
@@ -2090,11 +2082,35 @@
 </Struct>
 <Struct Name="WS_WidgetSpawnStruct_Footer" ClientVersion="882">
 <Data ElementName="name" Type="EQ2_16Bit_String" Size="1" />
-<Data ElementName="unknown1a" Type="float" Size="1" />
-<Data ElementName="unknown2" Type="float" Size="1" />
-<Data ElementName="unknown3" Type="float" Size="1" />
-<Data ElementName="unknown3b" Type="int8" Size="1" />
-<Data ElementName="unknown3c" Type="int8" Size="1" />
+<Data ElementName="unknown" Type="int8" Size="1" />
+<Data ElementName="is_player" Type="int8" Size="1" />
+<Data ElementName="last_name" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="suffix" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="prefix" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="pvp_title" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="guild" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="is_transport" Type="int8" Size="1" />
+<Data ElementName="transport_array" Type="Array" ArraySizeVariable="is_transport">
+	<Data ElementName="version_0" Type="int32" Size="1" />
+	<Data ElementName="lerptype_0" Type="int32" Size="1" />
+	<Data ElementName="num_coords1" Type="int32" Size="1" />
+	<Data ElementName="movement_array" Type="Array" ArraySizeVariable="num_coords1">
+		<Data ElementName="x" Type="float" />
+		<Data ElementName="y" Type="float" />
+		<Data ElementName="z" Type="float" />
+		<Data ElementName="heading" Type="float" /> <!-- delta_time -->
+	</Data>
+	<Data ElementName="version_1" Type="int32" Size="1" />
+	<Data ElementName="lerptype_1" Type="int32" Size="1" />
+	<Data ElementName="num_coords2" Type="int32" Size="1" />
+	<Data ElementName="coord_array" Type="Array" ArraySizeVariable="num_coords2">
+		<Data ElementName="x_2" Type="float" />
+		<Data ElementName="y_2" Type="float" />
+		<Data ElementName="z_2" Type="float" />
+		<Data ElementName="heading_2" Type="float" />
+	</Data>
+</Data>
+<Data ElementName="spawn_type" Type="int8" Size="1" />
 <Data ElementName="widget_id" Type="int32" Size="1" />
 <Data ElementName="widget_x" Type="float" Size="1" />
 <Data ElementName="widget_y" Type="float" Size="1" />
@@ -2116,11 +2132,35 @@
 </Struct>
 <Struct Name="WS_SignWidgetSpawnStruct_Footer" ClientVersion="882">
 <Data ElementName="name" Type="EQ2_16Bit_String" Size="1" />
-<Data ElementName="unknown1a" Type="float" Size="1" />
-<Data ElementName="unknown1b" Type="float" Size="1" />
-<Data ElementName="unknown1c" Type="float" Size="1" />
-<Data ElementName="unknown2" Type="int8" Size="1" />
-<Data ElementName="unknown2b" Type="int8" Size="1" />
+<Data ElementName="unknown" Type="int8" Size="1" />
+<Data ElementName="is_player" Type="int8" Size="1" />
+<Data ElementName="last_name" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="suffix" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="prefix" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="pvp_title" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="guild" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="is_transport" Type="int8" Size="1" />
+<Data ElementName="transport_array" Type="Array" ArraySizeVariable="is_transport">
+	<Data ElementName="version_0" Type="int32" Size="1" />
+	<Data ElementName="lerptype_0" Type="int32" Size="1" />
+	<Data ElementName="num_coords1" Type="int32" Size="1" />
+	<Data ElementName="movement_array" Type="Array" ArraySizeVariable="num_coords1">
+		<Data ElementName="x" Type="float" />
+		<Data ElementName="y" Type="float" />
+		<Data ElementName="z" Type="float" />
+		<Data ElementName="heading" Type="float" /> <!-- delta_time -->
+	</Data>
+	<Data ElementName="version_1" Type="int32" Size="1" />
+	<Data ElementName="lerptype_1" Type="int32" Size="1" />
+	<Data ElementName="num_coords2" Type="int32" Size="1" />
+	<Data ElementName="coord_array" Type="Array" ArraySizeVariable="num_coords2">
+		<Data ElementName="x_2" Type="float" />
+		<Data ElementName="y_2" Type="float" />
+		<Data ElementName="z_2" Type="float" />
+		<Data ElementName="heading_2" Type="float" />
+	</Data>
+</Data>
+<Data ElementName="spawn_type" Type="int8" Size="1" />
 <Data ElementName="widget_id" Type="int32" Size="1" />
 <Data ElementName="widget_x" Type="float" Size="1" />
 <Data ElementName="widget_y" Type="float" Size="1" />
@@ -2128,7 +2168,8 @@
 <Data ElementName="title" Type="EQ2_16Bit_String" Size="1" />
 <Data ElementName="description" Type="EQ2_16Bit_String" Size="1" />
 <Data ElementName="sign_distance" Type="float" Size="1" />
-<Data ElementName="show" Type="int16" Size="1" />
+<Data ElementName="show" Type="int8" Size="1" />
+<Data ElementName="language" Type="int8" Size="1" />
 </Struct>
 <Struct Name="Substruct_SpawnVisualizationInfoStruct" ClientVersion="1">
 <Data ElementName="arrow_color" Type="int8" Size="1" />
@@ -2213,16 +2254,15 @@
 <Data ElementName="npc_hate" Type="int8" Size="1" />
 <Data ElementName="unknowna" Type="int8" Size="1" />
 <Data ElementName="name_quest_icon" Type="int8" Size="1" />
-<Data ElementName="unknowna2" Type="int8" Size="4" />
-<Data ElementName="vis_flags" Type="int8" Size="1" />
-<Data ElementName="npc_aaxp" Type="int8" Size="1" />
+<Data ElementName="unknowna2" Type="int32" Size="1" />
+<Data ElementName="vis_flags" Type="int16" Size="1" />
 <Data ElementName="unknownb" Type="int8" Size="1" />
 <Data ElementName="pvp_difficulty" Type="int8" Size="1" />
-<Data ElementName="hand_flag" Type="int8" Size="1" />
-<Data ElementName="unknown2" Type="int8" Size="2" />
+<Data ElementName="show_hand_flag" Type="int8" Size="1" />
+<Data ElementName="unknown4" Type="int32" Size="1" />
 <Data ElementName="tag1" Type="int8" Size="1" />
 <Data ElementName="tag2" Type="int8" Size="1" />
-<Data ElementName="unknown2" Type="int8" Size="3" />
+<Data ElementName="unknown3" Type="int8" Size="1" />
 </Struct>
 
 <Struct Name="WS_SpawnStruct" ClientVersion="1">

+ 27 - 30
server/WorldStructs.xml

@@ -1245,10 +1245,8 @@ to zero and treated like placeholders." />
 <Struct Name="Substruct_GroupMember" ClientVersion="57048" >
 <Data ElementName="spawn_id" Type="int32" Size="1" />
 <Data ElementName="pet_id" Type="int32" Size="1" />
-<Data ElementName="hp_current" Type="sint32" Size="1" />
-<Data ElementName="hp_current2" Type="sint32" Size="1" />
-<Data ElementName="hp_max" Type="sint32" Size="1" />
-<Data ElementName="hp_max2" Type="sint32" Size="1" />
+<Data ElementName="hp_current" Type="sint64" Size="1" />
+<Data ElementName="hp_max" Type="sint64" Size="1" />
 <Data ElementName="power_current" Type="sint32" Size="1" />
 <Data ElementName="power_max" Type="sint32" Size="1" />
 <Data ElementName="level_current" Type="int16" Size="1" />
@@ -9700,7 +9698,9 @@ to zero and treated like placeholders." />
 <Data ElementName="vision" Type ="int16" Size="1" />
 <Data ElementName="unknown551" Type ="int8" Size="1" />
 <Data ElementName="unknown525" Type ="int8" Size="1062" />
+<Data ElementName="activegroupmembers" Type ="int8" Size="1" />
 <Data ElementName="group_members" Substruct="Substruct_GroupMember" Size="5" />
+<Data ElementName="leaderIndex" Type ="int32" Size="1" />
 <Data ElementName="unknown182" Type="int16" Size="1" />
 <Data ElementName="unknown183" Type="int8" Size="462" />
 <Data ElementName="pet_id" Type="int32" Size="1" />
@@ -10758,16 +10758,15 @@ to zero and treated like placeholders." />
 <Data ElementName="tradeskill_effects_bonus" Type="float" Size="1" />
 <Data ElementName="unknown137" Type="float" Size="1" />
 <Data ElementName="unknown138" Type="float" Size="1" />
-<Data ElementName="unknown139" Type="float" Size="1" />
 <Data ElementName="dps" Type="float" Size="1" />
 <Data ElementName="unknown141" Type="float" Size="1" />
 <Data ElementName="unknown142" Type="float" Size="1" />
+<Data ElementName="unknown142x" Type="float" Size="1" />
 <Data ElementName="base_avoidance" Type="float" Size="1" />
 <Data ElementName="unknown144" Type="float" Size="1" />
 <Data ElementName="uncontested_riposte_pve" Type="float" Size="1" />
 <Data ElementName="uncontested_parry_pve" Type="float" Size="1" />
 <Data ElementName="unknown147" Type="float" Size="1" />
-<Data ElementName="unknown148" Type="float" Size="1" />
 <Data ElementName="melee_ae" Type="float" Size="1" />
 <Data ElementName="multi_attack" Type="float" Size="1" /> 
 <Data ElementName="spell_multi_attack" Type="float" Size="1" /> <!-- spell_doublecast -->
@@ -10788,6 +10787,7 @@ to zero and treated like placeholders." />
 <Data ElementName="casting_speed" Type="float" Size="1" />
 <Data ElementName="spell_reuse_speed" Type="float" Size="1" />
 <Data ElementName="unknown168" Type="float" Size="1" />
+<Data ElementName="unknown168x" Type="float" Size="1" />
 <Data ElementName="decrease_falling_dmg" Type="float" Size="1" />
 <Data ElementName="unknown170" Type="float" Size="1" />
 <Data ElementName="unknown171" Type="float" Size="1" />
@@ -10817,7 +10817,7 @@ to zero and treated like placeholders." />
 <Data ElementName="unknown195" Type="float" Size="1" />
 <Data ElementName="unknown197" Type="float" Size="1" />
 <Data ElementName="pvp_crit_mit" Type ="float" Size="1" />
-<Data ElementName="pvp_crit_mit" Type ="float" Size="1" />
+<Data ElementName="unknown199x" Type ="float" Size="1" />
 <Data ElementName="unknown199" Type ="float" Size="1" />
 <Data ElementName="unknown200" Type ="float" Size="1" />
 <Data ElementName="unknown201" Type ="float" Size="1" />
@@ -11008,18 +11008,6 @@ to zero and treated like placeholders." />
 <Data ElementName="unknown380" Type="float" Size="1" />
 <Data ElementName="unknown381" Type="float" Size="1" />
 <Data ElementName="lethality_pvp" Type="float" Size="1" />
-<Data ElementName="unknown383" Type="float" Size="1" />
-<Data ElementName="unknown384" Type="float" Size="1" />
-<Data ElementName="unknown385" Type="float" Size="1" />
-<Data ElementName="unknown386" Type="float" Size="1" />
-<Data ElementName="unknown387" Type="float" Size="1" />
-<Data ElementName="unknown388" Type="float" Size="1" />
-<Data ElementName="unknown389" Type="float" Size="1" />
-<Data ElementName="unknown390" Type="float" Size="1" />
-<Data ElementName="unknown391" Type="float" Size="1" />
-<Data ElementName="unknown392" Type="float" Size="1" />
-<Data ElementName="unknown393" Type="float" Size="1" />
-<Data ElementName="unknown394" Type="float" Size="1" />
 <Data ElementName="unknown395" Type="float" Size="1" />
 <Data ElementName="unknown396" Type="float" Size="1" />
 <Data ElementName="unknown397" Type="float" Size="1" />
@@ -11047,7 +11035,6 @@ to zero and treated like placeholders." />
 <Data ElementName="max_crafting" Type="float" Size="1" />
 <Data ElementName="component_refund" Type="float" Size="1" />
 <Data ElementName="unknown421" Type="float" Size="1" />
-<Data ElementName="refine_quantity_mod" Type="float" Size="1" />
 <Data ElementName="ex_durability_mod" Type="float" Size="1" />
 <Data ElementName="ex_durability_add" Type="float" Size="1" />
 <Data ElementName="ex_crit_success_mod" Type="float" Size="1" />
@@ -11067,6 +11054,19 @@ to zero and treated like placeholders." />
 <Data ElementName="unknown439" Type="float" Size="1" />
 <Data ElementName="unknown440" Type="float" Size="1" />
 <Data ElementName="unknown441" Type="float" Size="1" />
+<Data ElementName="unknown442x" Type="float" Size="1" />
+<Data ElementName="unknown443x" Type="float" Size="1" />
+<Data ElementName="unknown444x" Type="float" Size="1" />
+<Data ElementName="unknown445x" Type="float" Size="1" />
+<Data ElementName="unknown446x" Type="float" Size="1" />
+<Data ElementName="unknown447x" Type="float" Size="1" />
+<Data ElementName="unknown448x" Type="float" Size="1" />
+<Data ElementName="unknown449x" Type="float" Size="1" />
+<Data ElementName="unknown450x" Type="float" Size="1" />
+<Data ElementName="unknown451x" Type="float" Size="1" />
+<Data ElementName="unknown452x" Type="float" Size="1" />
+<Data ElementName="unknown453x" Type="float" Size="1" />
+<Data ElementName="unknown454x" Type="float" Size="1" />
 <Data ElementName="unknown180" Type="int8" Size="1" />
 <Data ElementName="unknown524" Type="int8" Size="1" />
 <Data ElementName="unknown181a" Type="int8" Size="1" />
@@ -11155,12 +11155,11 @@ to zero and treated like placeholders." />
 <Data ElementName="unknown523" Type ="float" Size="1" />
 <Data ElementName="unknown550" Type ="int8" Size="1" />
 <Data ElementName="vision" Type ="int16" Size="1" />
-<Data ElementName="unknown551" Type ="int8" Size="25" />
-<Data ElementName="unknown551a" Type ="int32" Size="12" />
-<Data ElementName="unknown525" Type ="int8" Size="990" />
+<Data ElementName="unknown551" Type ="int8" Size="1" />
+<Data ElementName="unknown525" Type ="int8" Size="1062" />
 <Data ElementName="group_members" Substruct="Substruct_GroupMember" Size="5" />
-<Data ElementName="unknown182" Type="int16" Size="1" />
-<Data ElementName="unknown183" Type="int8" Size="462" />
+<Data ElementName="group_leader_index" Type="int32" Size="1" />
+<Data ElementName="unknown183" Type="int8" Size="460" />
 <Data ElementName="pet_id" Type="int32" Size="1" />
 <Data ElementName="pet_name" Type="char" Size="32" />
 <Data ElementName="unknown184" Type="int8" Size="9" />
@@ -11183,13 +11182,11 @@ to zero and treated like placeholders." />
 <Data ElementName="merc_unknown21cc" Type="int8" Size="4" />
 <Data ElementName="rain" Type="float" Size="1" />
 <Data ElementName="rain2" Type="float" Size="1" />
+<Data ElementName="unknownx527" Type="int8" Size="9" />
+<Data ElementName="house_zone" Type="char" Size="48" />
+<Data ElementName="unknownx526" Type="int8" Size="132" />
 <Data ElementName="status_points" Type="int32" Size="1" />
-<Data ElementName="unknownint32a" Type="int32" Size="1" />
 <Data ElementName="guild_status" Type="int32" Size="1" />
-<Data ElementName="unknownint32b" Type="int32" Size="1" />
-<Data ElementName="unknown527" Type="int8" Size="1" />
-<Data ElementName="house_zone" Type="char" Size="48" />
-<Data ElementName="unknown526" Type="int8" Size="132" />
 <Data ElementName="unknown187" Type="int8" Size="11" />
 <Data ElementName="bind_zone" Type="char" Size="32" />
 <Data ElementName="unknown188" Type="int8" Size="52" />