Browse Source

Fix #306 - added language support for player chat. Additional log cleanup of unnecessary messages.

Emagi 1 year ago
parent
commit
966ada0771

+ 1 - 1
EQ2/source/WorldServer/Bots/Bot.cpp

@@ -146,7 +146,7 @@ bool Bot::CanEquipItem(Item* item) {
 void Bot::MessageGroup(string msg) {
 	GroupMemberInfo* gmi = GetGroupMemberInfo();
 	if (gmi)
-		world.GetGroupManager()->GroupChatMessage(gmi->group_id, this, msg.c_str());
+		world.GetGroupManager()->GroupChatMessage(gmi->group_id, this, 0, msg.c_str());
 }
 
 void Bot::GetNewSpells() {

+ 1 - 1
EQ2/source/WorldServer/Chat/ChatChannel.cpp

@@ -143,7 +143,7 @@ bool ChatChannel::TellChannel(Client *client, const char *message, const char* n
 
 		packet_struct->setDataByName("to", to_client->GetPlayer()->GetName());
 		packet_struct->setDataByName("channel", to_client->GetMessageChannelColor(CHANNEL_CUSTOM_CHANNEL));
-		packet_struct->setDataByName("language", 0);
+		packet_struct->setDataByName("language", client->GetPlayer()->GetCurrentLanguage());
 		packet_struct->setDataByName("message", message);
 		packet_struct->setDataByName("channel_name", name);
 		packet_struct->setDataByName("show_bubble", 1);

+ 8 - 8
EQ2/source/WorldServer/Commands/Commands.cpp

@@ -2437,7 +2437,7 @@ void Commands::Process(int32 index, EQ2_16BitString* command_parms, Client* clie
 
 				if (spawn->IsNPC())
 					show_bubble = false;
-				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SAY, tmp, HEAR_SPAWN_DISTANCE, 0, show_bubble);
+				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SAY, tmp, HEAR_SPAWN_DISTANCE, 0, show_bubble, client->GetPlayer()->GetCurrentLanguage());
 				if(spawn->IsPlayer() == false && spawn->Alive() && spawn->GetDistance(client->GetPlayer()) < rule_manager.GetGlobalRule(R_Spawn, HailDistance)->GetInt32()){
 					if(spawn->IsNPC() && ((NPC*)spawn)->EngagedInCombat())
 						spawn->GetZone()->CallSpawnScript(spawn, SPAWN_SCRIPT_HAILED_BUSY, client->GetPlayer());
@@ -2460,13 +2460,13 @@ void Commands::Process(int32 index, EQ2_16BitString* command_parms, Client* clie
 			}
 			else {
 				string tmp = "Hail";
-				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SAY, tmp.c_str(), HEAR_SPAWN_DISTANCE, 0, true);
+				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SAY, tmp.c_str(), HEAR_SPAWN_DISTANCE, 0, true, client->GetPlayer()->GetCurrentLanguage());
 			}
 			break;
 						  }
 		case COMMAND_SAY:{
 			if (sep && sep->arg[0][0]) {
-				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SAY, sep->argplus[0], HEAR_SPAWN_DISTANCE);
+				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SAY, sep->argplus[0], HEAR_SPAWN_DISTANCE, 0, true, client->GetPlayer()->GetCurrentLanguage());
 				if (cmdTarget && !(cmdTarget->IsPlayer()))
 					client->GetCurrentZone()->CallSpawnScript(cmdTarget, SPAWN_SCRIPT_HEAR_SAY, client->GetPlayer(), sep->argplus[0]);
 			}
@@ -2476,7 +2476,7 @@ void Commands::Process(int32 index, EQ2_16BitString* command_parms, Client* clie
 						 }
 		case COMMAND_TELL:{
 			if(sep && sep->arg[0] && sep->argplus[1]){
-				if(!zone_list.HandleGlobalChatMessage(client, sep->arg[0], CHANNEL_PRIVATE_TELL, sep->argplus[1]))
+				if(!zone_list.HandleGlobalChatMessage(client, sep->arg[0], CHANNEL_PRIVATE_TELL, sep->argplus[1], 0, client->GetPlayer()->GetCurrentLanguage()))
 					client->Message(CHANNEL_COLOR_RED,"Unable to find client %s",sep->arg[0]);
 			}else
 				client->SimpleMessage(CHANNEL_COLOR_YELLOW,"Usage:  /tell {character_name} {message}");
@@ -2484,14 +2484,14 @@ void Commands::Process(int32 index, EQ2_16BitString* command_parms, Client* clie
 						  }
 		case COMMAND_SHOUT:{
 			if(sep && sep->arg[0][0])
-				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SHOUT, sep->argplus[0]);
+				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_SHOUT, sep->argplus[0], 0, 0, true, client->GetPlayer()->GetCurrentLanguage());
 			else
 				client->SimpleMessage(CHANNEL_COLOR_YELLOW,"Usage:  /shout {message}");
 			break;
 						   }
 		case COMMAND_AUCTION:{
 			if(sep && sep->arg[0][0])
-				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_AUCTION, sep->argplus[0]);
+				client->GetCurrentZone()->HandleChatMessage(client->GetPlayer(), 0, CHANNEL_AUCTION, sep->argplus[0], 0, 0, true, client->GetPlayer()->GetCurrentLanguage());
 			else
 				client->SimpleMessage(CHANNEL_COLOR_YELLOW,"Usage:  /auction {message}");
 			break;
@@ -2499,7 +2499,7 @@ void Commands::Process(int32 index, EQ2_16BitString* command_parms, Client* clie
 		case COMMAND_OOC:{
 			//For now ooc will be the global chat channel, eventually when we create more channels we will create a global chat channel
 			if(sep && sep->arg[0][0])
-				zone_list.HandleGlobalChatMessage(client, 0, CHANNEL_OUT_OF_CHARACTER, sep->argplus[0]);
+				zone_list.HandleGlobalChatMessage(client, 0, CHANNEL_OUT_OF_CHARACTER, sep->argplus[0], 0, client->GetPlayer()->GetCurrentLanguage());
 			else
 				client->SimpleMessage(CHANNEL_COLOR_YELLOW,"Usage:  /ooc {message}");
 			break;
@@ -3056,7 +3056,7 @@ void Commands::Process(int32 index, EQ2_16BitString* command_parms, Client* clie
 		case COMMAND_GROUPSAY:{
 			GroupMemberInfo* gmi = client->GetPlayer()->GetGroupMemberInfo();
 			if(sep && sep->arg[0] && gmi)
-				world.GetGroupManager()->GroupChatMessage(gmi->group_id, client->GetPlayer(), sep->argplus[0]);
+				world.GetGroupManager()->GroupChatMessage(gmi->group_id, client->GetPlayer(), client->GetPlayer()->GetCurrentLanguage(), sep->argplus[0]);
 			break;
 		}
 		case COMMAND_GROUPINVITE: {

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

@@ -1236,7 +1236,6 @@ void Entity::CalculateBonuses(){
 	info->set_block(info->get_block_base());
 	
 	info->set_cur_attack(info->get_attack_base());
-	info->set_cur_mitigation(info->get_mitigation_base());
 	info->set_base_avoidance_pct(info->get_avoidance_base());
 
 	info->set_disease(info->get_disease_base());
@@ -1288,6 +1287,8 @@ void Entity::CalculateBonuses(){
 
 	ItemStatsValues* values = equipment_list.CalculateEquipmentBonuses(this);
 	CalculateSpellBonuses(values);
+	
+	info->set_cur_mitigation(info->get_mitigation_base());
 	info->add_sta((float)values->sta);
 	info->add_str((float)values->str);
 	info->add_agi((float)values->agi);

+ 2 - 2
EQ2/source/WorldServer/Guilds/Guild.cpp

@@ -2211,7 +2211,7 @@ void Guild::HandleGuildSay(Client* sender, const char* message) {
 			continue;
 			
 		if (permissions.Get(itr->second->rank)->Get(GUILD_PERMISSIONS_SEE_GUILD_CHAT))
-			client->GetCurrentZone()->HandleChatMessage(client, sender->GetPlayer(), client->GetPlayer()->GetName(), CHANNEL_GUILD_SAY, message, 0, 0, false);
+			client->GetCurrentZone()->HandleChatMessage(client, sender->GetPlayer(), client->GetPlayer()->GetName(), CHANNEL_GUILD_SAY, message, 0, 0, false, sender->GetPlayer()->GetCurrentLanguage());
 	}
 	mMembers.releasereadlock(__FUNCTION__, __LINE__);
 	LogWrite(GUILD__DEBUG, 0, "Guilds", "Guild Say");
@@ -2240,7 +2240,7 @@ void Guild::HandleOfficerSay(Client* sender, const char* message) {
 			continue;
 
 		if (permissions.Get(itr->second->rank)->Get(GUILD_PERMISSIONS_SEE_OFFICER_CHAT))
-			client->GetCurrentZone()->HandleChatMessage(client, sender->GetPlayer(), client->GetPlayer()->GetName(), CHANNEL_OFFICER_SAY, message, 0, 0, false);
+			client->GetCurrentZone()->HandleChatMessage(client, sender->GetPlayer(), client->GetPlayer()->GetName(), CHANNEL_OFFICER_SAY, message, 0, 0, false, sender->GetPlayer()->GetCurrentLanguage());
 	}
 	mMembers.releasereadlock(__FUNCTION__, __LINE__);
 	LogWrite(GUILD__DEBUG, 0, "Guilds", "Officer Say");

+ 11 - 7
EQ2/source/WorldServer/LuaFunctions.cpp

@@ -1240,15 +1240,16 @@ int EQ2Emu_lua_Say(lua_State* state) {
 	Spawn* spawn = lua_interface->GetSpawn(state);
 	string message = lua_interface->GetStringValue(state, 2);
 	Spawn* player = lua_interface->GetSpawn(state, 3);
-	int32 language = lua_interface->GetInt32Value(state, 4);
+	float dist = lua_interface->GetFloatValue(state, 4);
+	int32 language = lua_interface->GetInt32Value(state, 5);
 	if (spawn && message.length() > 0) {
 		Client* client = 0;
 		if (player && player->IsPlayer())
 			client = spawn->GetZone()->GetClientBySpawn(player);
 		if (client)
-			spawn->GetZone()->HandleChatMessage(client, spawn, 0, CHANNEL_SAY, message.c_str(), 30, 0, true, language);
+			spawn->GetZone()->HandleChatMessage(client, spawn, 0, CHANNEL_SAY, message.c_str(), (dist > 0.0f) ? dist : 30.0f, 0, true, language);
 		else
-			spawn->GetZone()->HandleChatMessage(spawn, 0, CHANNEL_SAY, message.c_str(), 30, 0, true, language);
+			spawn->GetZone()->HandleChatMessage(spawn, 0, CHANNEL_SAY, message.c_str(), (dist > 0.0f) ? dist : 30.0f, 0, true, language);
 	}
 	lua_interface->ResetFunctionStack(state);
 	return 0;
@@ -1261,14 +1262,15 @@ int EQ2Emu_lua_Shout(lua_State* state) {
 	string message = lua_interface->GetStringValue(state, 2);
 	Spawn* player = lua_interface->GetSpawn(state, 3);
 	float dist = lua_interface->GetFloatValue(state, 4);
+	int32 language = lua_interface->GetInt32Value(state, 5);
 	if (spawn && message.length() > 0) {
 		Client* client = 0;
 		if (player && player->IsPlayer())
 			client = spawn->GetZone()->GetClientBySpawn(player);
 		if (client)
-			spawn->GetZone()->HandleChatMessage(client, spawn, 0, CHANNEL_SHOUT, message.c_str(), (dist > 0.0f) ? dist : 30.0f);
+			spawn->GetZone()->HandleChatMessage(client, spawn, 0, CHANNEL_SHOUT, message.c_str(), (dist > 0.0f) ? dist : 30.0f, 0, true, language);
 		else
-			spawn->GetZone()->HandleChatMessage(spawn, 0, CHANNEL_SHOUT, message.c_str(), (dist > 0.0f) ? dist : 30.0f);
+			spawn->GetZone()->HandleChatMessage(spawn, 0, CHANNEL_SHOUT, message.c_str(), (dist > 0.0f) ? dist : 30.0f, 0, true, language);
 	}
 	lua_interface->ResetFunctionStack(state);
 	return 0;
@@ -1280,14 +1282,16 @@ int EQ2Emu_lua_SayOOC(lua_State* state) {
 	Spawn* spawn = lua_interface->GetSpawn(state);
 	string message = lua_interface->GetStringValue(state, 2);
 	Spawn* player = lua_interface->GetSpawn(state, 3);
+	float dist = lua_interface->GetFloatValue(state, 4);
+	int32 language = lua_interface->GetInt32Value(state, 5);
 	if (spawn && message.length() > 0) {
 		Client* client = 0;
 		if (player && player->IsPlayer())
 			client = spawn->GetZone()->GetClientBySpawn(player);
 		if (client)
-			spawn->GetZone()->HandleChatMessage(client, spawn, 0, CHANNEL_OUT_OF_CHARACTER, message.c_str(), 30);
+			spawn->GetZone()->HandleChatMessage(client, spawn, 0, CHANNEL_OUT_OF_CHARACTER, message.c_str(), (dist > 0.0f) ? dist : 30.0f, 0, true, language);
 		else
-			spawn->GetZone()->HandleChatMessage(spawn, 0, CHANNEL_OUT_OF_CHARACTER, message.c_str(), 30);
+			spawn->GetZone()->HandleChatMessage(spawn, 0, CHANNEL_OUT_OF_CHARACTER, message.c_str(), (dist > 0.0f) ? dist : 30.0f, 0, true, language);
 	}
 	lua_interface->ResetFunctionStack(state);
 	return 0;

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

@@ -123,6 +123,7 @@ Player::Player(){
 	SetSaveSpellEffects(true);
 	reset_mentorship = false;
 	all_spells_locked = false;
+	current_language_id = 0;
 }
 Player::~Player(){
 	SetSaveSpellEffects(true);

+ 6 - 0
EQ2/source/WorldServer/Player.h

@@ -1047,6 +1047,10 @@ public:
 	int16 MatchGMVisualFilter(int32 filter_type, int32 filter_value, char* filter_search_str, bool in_vismutex_lock = false);
 	void ClearGMVisualFilters();
 	int GetPVPAlignment();
+	
+	int32	GetCurrentLanguage() { return current_language_id; }
+	void	SetCurrentLanguage(int32 language_id) { current_language_id = language_id; }
+	
 	Mutex MPlayerQuests;
 	float   pos_packet_speed;
 private:
@@ -1179,6 +1183,8 @@ private:
 	Timer lift_cooldown;
 
 	vector<GMTagFilter> gm_visual_filters;
+	
+	int32 current_language_id;
 };
 #pragma pack()
 #endif

+ 4 - 4
EQ2/source/WorldServer/PlayerGroups.cpp

@@ -163,13 +163,13 @@ void PlayerGroup::SimpleGroupMessage(const char* message) {
 	MGroupMembers.releasereadlock(__FUNCTION__, __LINE__);
 }
 
-void PlayerGroup::GroupChatMessage(Spawn* from, const char* message) {
+void PlayerGroup::GroupChatMessage(Spawn* from, int32 language, const char* message) {
 	deque<GroupMemberInfo*>::iterator itr;
 	MGroupMembers.readlock(__FUNCTION__, __LINE__);
 	for(itr = m_members.begin(); itr != m_members.end(); itr++) {
 		GroupMemberInfo* info = *itr;
 		if(info && info->client && info->client->GetCurrentZone())
-			info->client->GetCurrentZone()->HandleChatMessage(info->client, from, 0, CHANNEL_GROUP_SAY, message, 0);
+			info->client->GetCurrentZone()->HandleChatMessage(info->client, from, 0, CHANNEL_GROUP_SAY, message, 0, 0, true, language);
 	}
 	MGroupMembers.releasereadlock(__FUNCTION__, __LINE__);
 }
@@ -595,11 +595,11 @@ void PlayerGroupManager::GroupMessage(int32 group_id, const char* message, ...)
 	SimpleGroupMessage(group_id, buffer);
 }
 
-void PlayerGroupManager::GroupChatMessage(int32 group_id, Spawn* from, const char* message) {
+void PlayerGroupManager::GroupChatMessage(int32 group_id, Spawn* from, int32 language, const char* message) {
 	MGroups.readlock(__FUNCTION__, __LINE__);
 
 	if (m_groups.count(group_id) > 0)
-		m_groups[group_id]->GroupChatMessage(from, message);
+		m_groups[group_id]->GroupChatMessage(from, language, message);
 
 	MGroups.releasereadlock(__FUNCTION__, __LINE__);
 }

+ 2 - 2
EQ2/source/WorldServer/PlayerGroups.h

@@ -81,7 +81,7 @@ public:
 
 
 	void SimpleGroupMessage(const char* message);
-	void GroupChatMessage(Spawn* from, const char* message);
+	void GroupChatMessage(Spawn* from, int32 language, const char* message);
 	void MakeLeader(Entity* new_leader);
 
 	void RemoveClientReference(Client* remove);
@@ -170,7 +170,7 @@ public:
 
 	void SimpleGroupMessage(int32 group_id, const char* message);
 	void GroupMessage(int32 group_id, const char* message, ...);
-	void GroupChatMessage(int32 group_id, Spawn* from, const char* message);
+	void GroupChatMessage(int32 group_id, Spawn* from, int32 language, const char* message);
 	void MakeLeader(int32 group_id, Entity* new_leader);
 	void UpdateGroupBuffs();
 

+ 6 - 6
EQ2/source/WorldServer/World.cpp

@@ -437,7 +437,7 @@ void ZoneList::CheckFriendZoned(Client* client){
 	MClientList.unlock();
 }
 
-bool ZoneList::HandleGlobalChatMessage(Client* from, char* to, int16 channel, const char* message, const char* channel_name){
+bool ZoneList::HandleGlobalChatMessage(Client* from, char* to, int16 channel, const char* message, const char* channel_name, int32 current_language_id){
 	if (!from) {
 		LogWrite(WORLD__ERROR, 0, "World", "HandleGlobalChatMessage() called with an invalid client");
 		return false;
@@ -453,11 +453,11 @@ bool ZoneList::HandleGlobalChatMessage(Client* from, char* to, int16 channel, co
 		else
 		{
 			const char* whoto = find_client->GetPlayer()->GetName();
-			find_client->HandleTellMessage(from, message, whoto);
-			from->HandleTellMessage(from, message, whoto);
+			find_client->HandleTellMessage(from, message, whoto, from->GetPlayer()->GetCurrentLanguage());
+			from->HandleTellMessage(from, message, whoto, from->GetPlayer()->GetCurrentLanguage());
 			if (find_client->GetPlayer()->get_character_flag(CF_AFK)) {
-				find_client->HandleTellMessage(find_client, find_client->GetPlayer()->GetAwayMessage().c_str(),whoto);
-				from->HandleTellMessage(find_client, find_client->GetPlayer()->GetAwayMessage().c_str(),whoto);
+				find_client->HandleTellMessage(find_client, find_client->GetPlayer()->GetAwayMessage().c_str(),whoto, from->GetPlayer()->GetCurrentLanguage());
+				from->HandleTellMessage(find_client, find_client->GetPlayer()->GetAwayMessage().c_str(),whoto, from->GetPlayer()->GetCurrentLanguage());
 			}
 		}
 	}
@@ -474,7 +474,7 @@ bool ZoneList::HandleGlobalChatMessage(Client* from, char* to, int16 channel, co
 		for(zone_iter=zlist.begin(); zone_iter!=zlist.end();zone_iter++){
 			zs = *zone_iter;
 			if(zs)
-				zs->HandleChatMessage(from->GetPlayer(), to, channel, message, 0, channel_name);
+				zs->HandleChatMessage(from->GetPlayer(), to, channel, message, 0, channel_name, true, current_language_id);
 		}
 		MZoneList.releasereadlock(__FUNCTION__, __LINE__);
 	}

+ 1 - 1
EQ2/source/WorldServer/World.h

@@ -424,7 +424,7 @@ class ZoneList {
 	void CheckFriendZoned(Client* client);
 
 	// move to Chat/Chat.h?
-	bool HandleGlobalChatMessage(Client* from, char* to, int16 channel, const char* message, const char* channel_name = 0);
+	bool HandleGlobalChatMessage(Client* from, char* to, int16 channel, const char* message, const char* channel_name = 0, int32 current_language_id = 0);
 	void HandleGlobalBroadcast(const char* message);
 	void HandleGlobalAnnouncement(const char* message);
 	//

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

@@ -1709,6 +1709,8 @@ bool WorldDatabase::LoadCharacterStats(int32 id, int32 account_id, Client* clien
 			client->GetPlayer()->SetDissonance(result.GetSInt16Str("dissonance"));
 			client->GetPlayer()->SetTotalSavageryBase(client->GetPlayer()->GetTotalSavagery());
 			client->GetPlayer()->SetTotalDissonanceBase(client->GetPlayer()->GetTotalDissonance());
+			
+			client->GetPlayer()->SetCurrentLanguage(result.GetInt32Str("current_language"));
 		}
 
 		return true;

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

@@ -3682,7 +3682,7 @@ int8 Client::GetMessageChannelColor(int8 channel_type) {
 	return channel_type;
 }
 
-void Client::HandleTellMessage(Client* from, const char* message, const char* to=NULL) {
+void Client::HandleTellMessage(Client* from, const char* message, const char* to, int32 current_language_id) {
 	if (!from || GetPlayer()->IsIgnored(from->GetPlayer()->GetName()))
 		return;
 	PacketStruct* packet = configReader.getStruct("WS_HearChat", GetVersion());
@@ -3694,8 +3694,13 @@ void Client::HandleTellMessage(Client* from, const char* message, const char* to
 		packet->setDataByName("to_spawn_id", 0xFFFFFFFF);
 		packet->setDataByName("unknown2", 1, 1);
 		packet->setDataByName("show_bubble", 1);
-		packet->setDataByName("understood", 1);
+		
+		if (current_language_id == 0 || GetPlayer()->HasLanguage(current_language_id)) {
+			packet->setDataByName("understood", 1);
+		}
+		
 		packet->setDataByName("time", 2);
+		packet->setDataByName("language", current_language_id);
 		packet->setMediumStringByName("message", message);
 		EQ2Packet* outpacket = packet->serialize();
 		QueuePacket(outpacket);			
@@ -9732,6 +9737,7 @@ void Client::SendLanguagesUpdate(int32 id) {
 	list<Language*>::iterator itr;
 	Language* language;
 	int32 i = 0;
+	GetPlayer()->SetCurrentLanguage(id);
 	PacketStruct* packet = configReader.getStruct("WS_Languages", GetVersion());
 	if (packet) {
 		packet->setArrayLengthByName("num_languages", languages->size());

+ 1 - 1
EQ2/source/WorldServer/client.h

@@ -159,7 +159,7 @@ public:
 	void	QueuePacket(EQ2Packet* app, bool attemptedCombine=false);
 	void	SendLoginInfo();
 	int8	GetMessageChannelColor(int8 channel_type);
-	void	HandleTellMessage(Client* from, const char* message, const char* to);
+	void	HandleTellMessage(Client* from, const char* message, const char* to, int32 current_language_id);
 	void	SimpleMessage(int8 color, const char* message);
 	void	Message(int8 type, const char* message, ...);
 	void	SendSpellUpdate(Spell* spell, bool add_silently = false, bool add_to_hotbar = true);

+ 4 - 5
EQ2/source/WorldServer/zoneserver.cpp

@@ -999,8 +999,6 @@ void ZoneServer::RemoveDeadEnemyList(Spawn *spawn)
 	vector<int32> *spawns;
 	vector<int32>::iterator itr;
 
-	LogWrite(ZONE__DEBUG, 7, "Zone", "Processing RemoveDeadEnemyList...");
-
 	m_npc_faction_list.writelock(__FUNCTION__, __LINE__);
 	if (npc_faction_list.count(faction_id) > 0) {
 		spawns = npc_faction_list[faction_id];
@@ -3391,7 +3389,9 @@ void ZoneServer::HandleChatMessage(Client* client, Spawn* from, const char* to,
 			packet->setMediumStringByName("message", message);
 			packet->setDataByName("language", language);
 
-			if (language > 0 && !client->GetPlayer()->HasLanguage(language))
+			bool hasLanguage = client->GetPlayer()->HasLanguage(language);
+			printf("Client: %s has %u language: %u\n", client->GetPlayer()->GetName(), language, hasLanguage);
+			if (language > 0 && !hasLanguage)
 				packet->setDataByName("understood", 0);
 			else
 				packet->setDataByName("understood", 1);
@@ -6018,8 +6018,7 @@ void ZoneServer::ProcessEntityCommand(EntityCommand* entity_command, Entity* cas
 void ZoneServer::RemoveSpawnSupportFunctions(Spawn* spawn, bool lock_spell_process) {
 	if(!spawn)
 		return;	
-
-	LogWrite(ZONE__DEBUG, 7, "Zone", "Processing RemoveSpawnSupportFunctions...");
+	
 	if(spawn->IsPlayer() && spawn->GetZone())
 		spawn->GetZone()->RemovePlayerPassenger(((Player*)spawn)->GetCharacterID());
 	if(spawn->IsEntity())

+ 0 - 1
EQ2/source/common/PacketStruct.cpp

@@ -2401,7 +2401,6 @@ void PacketStruct::PrintPacket() {
 				break;
 			}
 			case DATA_STRUCT_ITEM: {
-				printf("EQ2_Item %s\tIsSet:  %u", ds->GetName(), ds->IsSet());
 				if (ds->GetItemSize() > 0) {
 					DumpPacket((uchar*)GetStructPointer(ds), ds->GetItemSize());
 				}