Instanced Pet Pulling?

osirismdw

Active Member
Ive tried searching the forums and am not coming up with much. I basically want to pet pull with a conjuror in an instance, basically the conjy will never move, the pet will just go out, attack and bring back a mob, then re-attack, and the conjy starts his combat scheme. The only part I need help with would be the pet attacking, and coming back once it has aggro, then reattacking once its at my feet.
This is probly very minimalistic and wrong but could I do like
Target NPC (targets closest npc)
EQ2Execute "/Pet Attack"
Then here I was thinking about some sort of if ${target.InCombat}
Eq2Execute "/pet backoff"
But I couldnt get that incombat thing to work, at the minimum i guess i could just make it wait an amount of time that the pet would have definitely engaged it by, but thats less than optimal.

Then here would I put in something thats checks how close the pet is to me, and if it is that close, then have the pet reattack, basically at my feet so I can start nuking away.

I think a lot of people that browse these forums would like to see something like this, any help or pointing me in the right direction is much appreciated, thanks!
 

Pygar

EQ2Bot Specialist
Why not this...

Send pet after nearest npc

if pet.health<100 then cast summon pet

set pet to protect me and protect self.


I believe the mob will then run back to you and smack your pet.
 

Stormlord

Active Member
Would need a pet back off in there pygar otherwise it should work, tell the pet to back off summon it so it doesn't get thrashed on the trip back to you then set it to protect itself and you. :D now if I can just work out how to script that I'll let you know hehe still a noob in that respect.
 

Amadeus

The Maestro
Staff member
These are functions/routines that I use in my solo bot script (well, my illusionist one when I used to play illusionist).

This is, of course, a snippet from a working script, so it will have to be heavily edited to be useful; however, I think it will give you the concept for which you are asking.

Code:
function petpull()
{
	targcount:Set[1]
	
	if "${Me.ToActor.Health}>90&&${Target.ID}!=${Me.ID}&&${Me.ToActor.Power}>80"
	{
		EQ2:CreateCustomActorArray[byDist]
		;echo "Pulling Next if available of ${EQ2.CustomActorArraySize} mobs"
		
		do
		{
			
			if (${CustomActor[${targcount}].IsHeroic})
		    continue
		    
		  if (${CustomActor[${targcount}].InCombatMode})
		    continue  
		    
		  if (${CustomActor[${targcount}].ConColor.Equal[Grey]})
		  	continue
		    
		  if ${CustomActor[${targcount}].Type.NotEqual[NPC]}
		    continue  
		    	 
		  ;Temporarily avoid large encounters 
		  if (${CustomActor[${targcount}].EncounterSize} > 1)
		     continue

			;echo ${Time.Timestamp}: Checking array num: ${targcount} named ${CustomActor[${targcount}].Name} ID is ${CustomActor[${targcount}].ID} \n >> debugchecks.log
		
			if ${CustomActor[${targcount}].Type.Find[NPC]}&&${CustomActor[${targcount}].ID}
			{
				;EQ2Echo ${Time.Timestamp}: Targeting ${CustomActor[${targcount}]} \n >> debugattempts.log
				target ${CustomActor[${targcount}].ID}
				
				if ${Target.ID}!=${Me.ID}
				{
					;EQ2Echo "${Time.Timestamp} Attempting to cast on ${Target.ID} which should be ${CustomActor[${targcount}]}" \n >> debugpulls.log
					eq2execute /pet attack
					wait 5
					eq2execute /pet attack
				}
				WaitFor "You may not order your pet to attack the selected or implied target." 20
				
				if "${WaitFor}==1"
				{
					;echo "Cant't see target"
					press ESC
				}
				else 
				{
					;echo "INC" 
					
					do
					{
						Wait 5
						status:Set["Waiting for Pet"]
										
						if !(${Target(exists)})
						{
							eq2execute /pet backoff
							break
						}
							
		  			ExecuteQueued								
					}
					while (!(${Target.Target(exists)}))&&(${Me.PetHealth}>70)
					
					wait 2
					eq2execute /pet backoff
					
					do
					{
						wait 2
						status:Set["Waiting for mob"]
											
		  			if (${Target.Distance} < 50)
		  			{
		  				if (${Me.Ability[${SentimentSpell}].IsReady})
							{
			 					call spellcast "${SentimentSpell}"
			 					wait 2
							}			
						}				
		  			ExecuteQueued		
					}
					while (${Target.Distance} > 20)&&(${Target.Target(exists)})
					
					if (${Me.Ability[${StunSpell1}].IsReady})	
					{
	 		  			if (!${Me.Maintained[${StunSpell2}](exists)})
	 		  			{
								if (${Target.Health} > 15)
		    				{
		  	   				call spellcast "${StunSpell1}"
		   	   				wait 1
		   					}
		   				}  
					}							
					
					face
					wait 2
					press "\\"
					wait 2
					eq2execute /pet attack
					wait 2
					eq2execute /pet attack
					bKilledMob:Set[1]
					break	
				}
			}
			wait 1
			
			;begin block of code called after a mob dies
			if ${bKilledMob} == 1
			{
		    bKilledMob:Set[0]
		    break
			}
						
			;end block of code called after a mob dies
		}
		while ${targcount:Inc}<${EQ2.CustomActorArraySize}
	}
}
 
Top Bottom