View Single Post
  #19  
Old 06-25-2006, 05:56 PM
unicorn97211
Sarnak
 
Join Date: May 2006
Posts: 37
Default Diffs (Cont)

Code:
--- C:\Code\EQEmu800\zone\npc.cpp	Wed May 31 21:13:32 2006
+++ C:\EQEmuSP\Source\0.7.0\zone\npc.cpp	Sun Jun 25 01:29:00 2006
@@ -233,8 +233,6 @@
 	pet_spell_id = 0;
 	
 	delaytimer = false;
-    feign_memory = "0";
-	forgetchance = 0;
 	attack_event = false;
 	attack_speed = d->attack_speed;
 
@@ -481,30 +479,19 @@
     if (IsStunned()||IsMezzed())
 	    return true;
 
-	//Feign Death Memory
-	if (forget_timer.Check() && strstr(GetFeignMemory(),"0") == NULL) {
-		Client* remember_client = entity_list.GetClientByName(GetFeignMemory());
-		if (remember_client != 0)
+	// EverHood - 6/14/06
+	// Improved Feign Death Memory
+	if (forget_timer.Check() && !feign_memory_list.empty()) {
+		std::list<int32>::iterator RememberedCharID;
+		for (RememberedCharID=feign_memory_list.begin(); RememberedCharID != feign_memory_list.end(); RememberedCharID++)
+		{
+			Client* remember_client = entity_list.GetClientByCharID(*RememberedCharID);
+			if (!remember_client->GetFeigned())
 		{
-			if (!remember_client->CastToClient()->GetFeigned())
-			{
-				AddToHateList(remember_client,1);
-				SetFeignMemory("0");
-				forgetchance = 0;
-			}
-			else if (rand()%100 <= forgetchance)
-			{
-				SetFeignMemory("0");
-				forgetchance = 0;
-			}
-			else
-			{
-				forgetchance += 1;
-			}
+				AddToHateList(remember_client->CastToMob(),1);
+				feign_memory_list.remove(*RememberedCharID);
+				break;
 		}
-		else
-		{
-			SetFeignMemory("0");
 		}
 	}
 	
@@ -519,6 +506,22 @@
     return true;
 }
 
+	// EverHood 6/14/06 - FD memory 
+	void   NPC::AddFeignMemory(Client* attacker) {
+		feign_memory_list.push_back(attacker->CharacterID());
+	}
+	void   NPC::RemoveFromFeignMemory(Client* attacker){
+		if(!feign_memory_list.empty()){
+			int32 attacker_charid = attacker->CharacterID();
+			feign_memory_list.remove(attacker_charid);
+		}
+	}
+	void   NPC::ClearFeignMemory(){
+		if(!feign_memory_list.empty()){
+			feign_memory_list.clear();
+		}
+	}
+
 int32 NPC::CountLoot() {
 	return(itemlist.size());
 }
--- C:\Code\EQEmu800\zone\npc.h	Sun Mar 19 20:04:48 2006
+++ C:\EQEmuSP\Source\0.7.0\zone\npc.h	Sun Jun 25 01:29:00 2006
@@ -161,9 +161,11 @@
     bool    IsOnHatelist(Mob*p) { return hate_list.IsOnHateList(p);}
 
 	void	SetNPCFactionID(sint32 in) { npc_faction_id = in; database.GetFactionIdsForNPC(npc_faction_id, &faction_list, &primary_faction); }
-	void	SetFeignMemory(const char* num) {feign_memory = num;}
-
-	inline const char*    GetFeignMemory()	{ return feign_memory; }
+	// EverHood 6/14/06
+	// Mobs need to be able to remember more than one feigned attacker
+	void	AddFeignMemory(Client* attacker);
+	void	RemoveFromFeignMemory(Client* attacker);
+	void	ClearFeignMemory();
 
 	float   org_x, org_y, org_z, org_heading;
 	
@@ -251,8 +253,8 @@
 	
 	int16	max_dmg;
 	int16	min_dmg;
-	const char*	feign_memory;
-	int8    forgetchance;
+	// EverHood 6/14/06
+	std::list<int32> feign_memory_list;
 	
 	//pet crap:
 	int16	pet_spell_id;
Reply With Quote