Thread: Blind effect
View Single Post
  #1  
Old 07-14-2014, 01:18 PM
noudess
Discordant
 
Join Date: Sep 2012
Location: Upstate NY
Posts: 274
Default Blind effect

I noticed that spells like flash of light and eye of confusion's Blindness effect was basically doing nothing.

From my memories of EQ, I recall that using these spells would get the mob to wander aimlessly as long as noone was in combat range. I played with the code for awhile and used some of the fear code, but tweaked target and when it was used. This seems to work ok. I was worried about making these blind spells too powerful, but since the mob attacks again if you get in range, its far less useful than fear. The mobs will also switch to anyone in range after you blind it and move out of range.

Let me know what you think. My code is deverged from the base for over a year, but I think these spots are very close still.

Code:
=== modified file 'zone/MobAI.cpp'
--- zone/MobAI.cpp	2014-07-09 13:07:28 +0000
+++ zone/MobAI.cpp	2014-07-14 16:38:13 +0000
@@ -1013,7 +1013,7 @@
 	// Begin: Additions for Wiz Fear Code
 	//
 	if(RuleB(Combat, EnableFearPathing)){
-		if(curfp) {
+		if(curfp || (is_blind && !CombatRange(hate_list.GetClosest(this)))) {
 			if(IsRooted()) {
 				//make sure everybody knows were not moving, for appearance sake
 				if(IsMoving())
@@ -1062,7 +1062,7 @@
 	if (engaged) 
 	{
 		_ZP(Mob_AI_Process_engaged);
-		if (IsRooted())
+		if (IsRooted() || is_blind)
 			SetTarget(hate_list.GetClosest(this));
 		else
 		{
@@ -1111,7 +1111,7 @@
 		{
 			StartEnrage();
 		}
-		
+			
 		bool is_combat_range = CombatRange(target);
 		
         if (is_combat_range) 

=== modified file 'zone/fearpath.cpp'
--- zone/fearpath.cpp	2013-08-27 14:08:21 +0000
+++ zone/fearpath.cpp	2014-07-14 16:49:08 +0000
@@ -130,7 +130,7 @@
 {
 float speed = GetRunspeed();
 
-if(flee_mode)
+if(flee_mode || is_blind)
 	{
 	//we know ratio < FLEE_HP_RATIO
 	float ratio = GetHPRatio();
@@ -148,6 +148,13 @@
 
 		ratio = (ratio/100);
 		speed = 2.5*(speed * ratio);
+
+		// A blinded mob should be pretty slow when running amuck.
+		if (is_blind)
+			{
+			speed = speed/4.0;
+			mlog(PATHING__DEBUG, "Reducing Speed on Blinded mob to %f.\n", speed);
+			}
 		}
 	}
 

=== modified file 'zone/mob.cpp'
--- zone/mob.cpp	2013-07-09 15:28:09 +0000
+++ zone/mob.cpp	2014-07-14 14:42:38 +0000
@@ -136,6 +136,7 @@
 	fear_walkto_y = -999999;
 	fear_walkto_z = -999999;
 	curfp = false;
+	is_blind = false;
 
 	AI_Init();
 	SetMoving(false);

=== modified file 'zone/mob.h'
--- zone/mob.h	2013-07-09 15:28:09 +0000
+++ zone/mob.h	2014-07-14 14:42:11 +0000
@@ -1529,6 +1529,7 @@
 	float fear_walkto_y;
 	float fear_walkto_z;
 	bool curfp;
+	bool is_blind;
 
 	// Pathing
 	//

=== modified file 'zone/spell_effects.cpp'
--- zone/spell_effects.cpp	2013-07-09 15:28:09 +0000
+++ zone/spell_effects.cpp	2014-07-14 14:49:10 +0000
@@ -1207,8 +1207,8 @@
 #endif
 				if (spells[spell_id].base[i] == 1)
 					BuffFadeByEffect(SE_Blind);
-				// solar: handled by client
-				// TODO: blind flag?
+				// solar: handled by client for PC victim
+				is_blind = true;	
 				break;
 			}
 
@@ -3586,6 +3586,9 @@
 				break;
 			}
 
+			case SE_Blind:
+				is_blind = false;
+				break;
 			case SE_Fear:
 			{
 				if(RuleB(Combat, EnableFearPathing)){
Reply With Quote