Browse Source

Limit bug reports on spell range being 0 to a single report per startup of world

Image 4 years ago
parent
commit
7f24a9e0d9

+ 3 - 2
EQ2/source/WorldServer/SpellProcess.cpp

@@ -963,8 +963,9 @@ void SpellProcess::ProcessSpell(ZoneServer* zone, Spell* spell, Entity* caster,
 					tmpTier = -1;
 
 				char msg[512];
-				snprintf(msg, 512, "%s: SpellCasted without proper spell range set: %s ID: %i Tier: %i Range obtained from tier %i range %f", caster->GetName(), spell->GetName(), spell->GetSpellID(), spell->GetSpellTier(), tmpTier, tmpRange);
-				commands.Command_ReportBug(client, new Seperator(msg));
+				snprintf(msg, 512, "SpellCasted without proper spell range set %s ID %i Tier %i Range obtained from tier %i range %f", spell->GetName(), spell->GetSpellID(), spell->GetSpellTier(), tmpTier, tmpRange);
+				if (!world.CheckTempBugCRC(msg))
+					commands.Command_ReportBug(client, new Seperator(msg));
 			}
 
 			if(caster->GetDistance(target) > tmpRange)

+ 19 - 0
EQ2/source/WorldServer/World.cpp

@@ -2087,6 +2087,25 @@ sint16 World::GetItemStatKAValue(sint16 subtype) {
 	return (ka_itemstat_conversion[subtype] - 600);
 }
 
+bool World::CheckTempBugCRC(char* msg)
+{
+	MBugReport.writelock();
+
+	sint32 crc = GetItemNameCrc(std::string(msg));
+	
+	if (bug_report_crc.count(crc) > 0)
+	{
+		MBugReport.releasewritelock();
+		return true;
+	}
+	else
+		bug_report_crc.insert(make_pair(crc, true));
+
+	MBugReport.releasewritelock();
+
+	return false;
+}
+
 
 #ifdef WIN32
 ulong World::GetCurrentThreadID(){

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

@@ -406,7 +406,6 @@ class ZoneList {
 	void ShutDownZones();
 	void ReloadMail();
 	void ReloadSpawns();
-
 private:
 	Mutex				MClientList;
 	Mutex				MZoneList;
@@ -523,6 +522,7 @@ public:
 
 	PlayerGroupManager* GetGroupManager() { return &m_playerGroupManager; }
 
+	bool CheckTempBugCRC(char* msg);
 private:
 	//void RemovePlayerFromGroup(PlayerGroup* group, GroupMemberInfo* info, bool erase = true);
 	//void DeleteGroupMember(GroupMemberInfo* info);
@@ -574,5 +574,8 @@ private:
 	map<int16,int16> ka_itemstat_conversion;
 
 	PlayerGroupManager m_playerGroupManager;
+
+	Mutex				MBugReport;
+	map<sint32, bool> bug_report_crc;
 };
 #endif