Trouble with a Macro

BuffBot

Once You Go Hack, You Never Go Back
Joined
Oct 14, 2006
Messages
417
Reaction score
0
Points
16
Okay, running Naggy and randomly I was failing missions so I watched it. For the record, I'm running the macro from mmo with no changes (other than taking beep out for tells).

I am running Naggy + 3 priests for extra protection. Well, if one priest dies, the other 2 stand there and continue to try and heal the priest. Meanwhile, Naggy ends up getting killed since they stopped trying to heal him. If I target Naggy with one of the priests, he will immediately cast heal. Anyone know why this may be happening?
 
You might try posting the macro you have in a code form and let some of the coders here take a look at it, maybe something's misplaced or not typed right in the macro..
 
Hmm, not sure how I managed to double post but I did...
 
You might try posting the macro you have in a code form and let some of the coders here take a look at it, maybe something's misplaced or not typed right in the macro..

No need to post the code its in the compile.
 
As what JJ said, I didnt think a need to post it since its in the compile and I didnt change anything other than taking the cpu beep out when tells are received.
 
when the one dies, do they have a corpse on target and keep trying to cast heal?
 
I have not looked at it but I am thinking it is probably related to Hovermode throwing off the check if they are alive/dead.
 
That's what I was thinking, it's targeting by ID so it will target a corpse and then keeps trying to heal it since it's hp % is below whatever number.
 
yeah when the cleric dies they continue to target the corpse.
 
Code:
|Naggy.mac v2.11 Coding by Fry, Z166204 Booges, Taron and JoeK
|Inspired by whycantiwin1
|Updated April 15th, 2008
|
|-*-This macro is to be only posted on MMOBugs.com-*-
|
|Usage: Please edit NaggyChars.ini with your characters names.
|       When entering mission for first time, spend your AA's
|       and click save.  The macro will auto load your saved AA's
|       Next Mission. Also make Kick Hotkey for Nagafen and Harm 
|       Touch hotkey for Tranixx.
|       Start the macro in Lavastorm next to "a weary traveler".
|       Start the Nagafen macro last.


#Chat group
#Chat tell
#Event Lastwave		"#*#great red dragon resides within his lair#*#"
#Event Slain 		"#*#You have been slain by#*#" 
#Event NoMonster	"#*#You may not enter the mission zone until you have chosen a monster#*#"
#Event Camping		"#*#It will take you about 25 seconds to prepare#*#"
#Event NoAAs 		"You do not have an ability set saved for this monster character."
#Event None         "You do not currently have any task replay timers."
#Event Finished     "'Defending the Lair' replay timer:  0d:0h:#1#m remaining."
#Event Incoming     "A greedy invader yells out, 'Everyone ready? Rez the fallen now out of AE range. One, two, three -- CHARGE! WAVE GO NOW!'"
#Event SomeTell     "#*#tells you#*#"


Sub Main
|--------------------------------------------------------------------
|##Between quotes type what people should say to you to get an invite
|--------------------------------------------------------------------
/declare Password 	string 	outer 	"PASSWORD"

/Echo +============*#*==================+
/Echo MMOBugs.com Naggy MM Automater V2.11
/Echo +============*#*==================+ 
/declare targetid 	    int    outer 	0
/declare Template 	    string outer 	Unknown
/declare missiondone 	int    outer 	0
/declare missioncounter	int	   outer 	0
/declare success        int    outer    0
/declare fail           int    outer    0
/declare MyAAExp        float  outer    ${Math.Calc[${Me.AAPointsTotal}*100+${Me.PctAAExp}]}
/declare MyExp          float  outer    ${Math.Calc[${Me.Level}*100+${Me.PctExp}]}
/declare TotalAAExp     float  outer    0.00
/declare TotalExp       float  outer    0.00
/declare WaveNumber     int    outer    0
/declare loopcount      int    outer    0
/squelch /plugin MQ2MoveUtils
/squelch /plugin MQ2Exchange
/squelch /plugin MQ2PiggyZone
/squelch /plugin MQ2Melee unload
/squelch /plugin MQ2AutoSkills unload

/if (${Ini[naggychars.ini,NaggyChars,Lord Nagafen,NULL].Equal[${Me.Name}]}) /varset Template Lord Nagafen
/if (${Ini[naggychars.ini,NaggyChars,Priest Of Nagafen1,NULL].Equal[${Me.Name}]}) /varset Template Priest Of Nagafen
/if (${Ini[naggychars.ini,NaggyChars,Priest Of Nagafen2,NULL].Equal[${Me.Name}]}) /varset Template Priest Of Nagafen2
/if (${Ini[naggychars.ini,NaggyChars,Priest Of Nagafen3,NULL].Equal[${Me.Name}]}) /varset Template Priest Of Nagafen3
/if (${Ini[naggychars.ini,NaggyChars,King Tranixx,NULL].Equal[${Me.Name}]}) /varset Template King Tranixx
/if (${Ini[naggychars.ini,NaggyChars,Magus Rokyl,NULL].Equal[${Me.Name}]}) /varset Template Magus Rokyl
/if (${Ini[naggychars.ini,NaggyChars,Warlord Skarlon,NULL].Equal[${Me.Name}]}) /varset Template Warlord Skarlon


	:main 
	/doevents 
	/call GM
	/if (${Template.Equal[Unknown]}) {
	/echo Character Template Unknown. Please Edit 
	/echo NaggyChars.ini And Insert Your Character Names.
	/echo Macro Ended
	/end
	}
	/if (${Zone.ID}==27) {
	    /varset WaveNumber 0
        /varcalc TotalAAExp ${TotalAAExp}+${Me.AAPointsTotal}*100+${Me.PctAAExp}-${MyAAExp}
        /varcalc TotalExp ${TotalExp}+${Me.Level}*100+${Me.PctExp}-${MyExp}
	    /echo XP Gained ${Math.Abs[${Math.Calc[${Me.Level}*100+${Me.PctExp}-${MyExp}]}]}% - Total XP Gained ${Math.Abs[${TotalExp}]}%
	    /echo AA XP Gained ${Math.Abs[${Math.Calc[${Me.AAPointsTotal}*100+${Me.PctAAExp}-${MyAAExp}]}]}% - Total AA XP Gained ${Math.Abs[${TotalAAExp}]}%
	    /echo I am ${Me.PctExp}% through level ${Me.Level} And ${Me.PctAAExp}% through my next AA.
        /echo I have ${Me.AAPointsTotal} AA's spent and ${Me.AAPoints} AA's banked.
	    /varcalc MyAAExp ${Me.AAPointsTotal}*100+${Me.PctAAExp}
        /varcalc MyExp ${Me.Level}*100+${Me.PctExp}
	    /if (${Template.Equal[Lord Nagafen]}) /call Event_None 
		/call Waitforall
		/if (${Template.Equal[Lord Nagafen]}) /call MissionSub
		/call TemplateSelection
		/call EnterMission
		/if (${Zone.ID}==32) {
		/call BuyAAs
		}
		/cleanup
		/call Fight
		
		/if (${Me.Race.Name.Equal[Dragon]} && ${Me.Class.Name.Equal[Warrior]}) {
			/tasktimer
		    /delay 5s
			}
		:waitfortimer
		/doevents
        /delay 10s
		/if (${Zone.ID}==32) /goto :waitfortimer
		/if (${missiondone}==0) {
		/varcalc fail ${fail}+1
		/echo Mission Failed
		/echo Successful Missions: ${success}
		/echo Failed Missions: ${fail} 
		}
		}
	/if (${Zone.ID}==32) {
		/if (${Me.Race.Name.Equal[Dragon]} && ${Me.Class.Name.Equal[Warrior]}) {
			/call Nagafen
			}
		/if (${Me.Race.Name.Equal[Giant]} && ${Me.Class.Name.Equal[Cleric]}) {
			/call Priest1
			}
		/if (${Me.Race.Name.Equal[Giant]} && ${Me.Class.Name.Equal[Shadow Knight]}) {
			/call Tranixx
			}
		/if (${Me.Race.Name.Equal[Giant]} && ${Me.Class.Name.Equal[Wizard]}) {
			/call Magus
			}
		/if (${Me.Race.Name.Equal[Giant]} && ${Me.Class.Name.Equal[Warrior]}) {
			/call Warlord
			}
		}
	/if (${Zone.ID}!= 27 && ${Zone.ID}!= 32) {
	/echo Please Start This Macro In Lavastorm Mountains Next To "a weary traveler"
	/end
	}
	/goto :main
/return 

Sub Waitforall
	/declare tempvar int local
	:wait
	/delay 1
	/if (${Zone.ID}!=27) /goto :wait
	/for tempvar 1 to ${Group.Members}
		/if (!${Group.Member[${tempvar}].ID}) /goto :wait
	/next tempvar
/return

Sub TemplateSelection
	:wait
	/delay 3s
	/doevents
	/if (${Window[TaskTemplateSelectWnd].Open}) {
	    /delay 3s 
		/call TemplateSelect
		/return
		} 
    /if (!${Template.Equal[Lord Nagafen]}) /goto :wait
/return

Sub MissionSub
	/if (${Me.Sitting}) /stand 
	/target A Weary Traveler
	/If (${Target.Distance}>40 && ${Zone.ID}==32) {
		/squelch /moveto loc 2720 -96
		/delay 10s !${Me.Moving}
		}
	/face
	/delay 2s
	/squelch /stick 10 
	/delay 2s 
	/squelch /stick off 
	/say Fierce Battles 
	/delay 3s 
	/if (!${Window[TaskTemplateSelectWnd].Open}) /call Wait
	/delay 1s
	/notify TaskTemplateSelectWnd TaskTemplateSelectListRequired listselect ${Window[TaskTemplateSelectWnd].Child[TaskTemplateSelectListRequired].List[Lord Nagafen]}
	/delay 5
	/notify TaskTemplateSelectWnd TaskTemplateSelectListRequired leftmouse ${Window[TaskTemplateSelectWnd].Child[TaskTemplateSelectListRequired].List[Lord Nagafen]}
	/delay 5
	/notify TaskTemplateSelectWnd TaskTemplateSelectAcceptButton leftmouseup 
	/delay 1s
/return

Sub EnterMission

	/doevents flush
	/if (${Me.Sitting}) /stand 
	/target A Weary Traveler
	/If (${Target.Distance}>40 && ${Zone.ID}==32) {
		/squelch /moveto loc 2720 -96
		/delay 10s !${Me.Moving}
		}
	/face
	/delay 2s
	/squelch /stick 10 
	/delay 2s 
	/squelch /stick off 
	/cleanup
	/delay 10s
	/say Imagine
	/delay 10s
	/if (${Zone.ID}==27) /say Imagine
	/delay 2s
	/doevents
	/call ZonerNaglair
/return

sub ZonerNaglair
	:waitforzone
	/if (${Zone.ID}!=32) /goto :waitforzone
	/delay 5s
	/varcalc missioncounter ${missioncounter}+1
	/echo Entered Mission ${missioncounter}.
/return

Sub Fight
	/squelch /target clear
	/if (${Template.Equal[Lord Nagafen]}) {
		/call Nagafen
		}
	/if (${Template.Equal[Priest Of Nagafen]}) {
		/call Priest1
		}
	/if (${Template.Equal[Priest Of Nagafen2]}) {
		/call Priest1
		}
	/if (${Template.Equal[Priest Of Nagafen3]}) {
		/call Priest1
		}	
	/if (${Template.Equal[King Tranixx]}) {
		/call Tranixx
		}
	/if (${Template.Equal[Magus Rokyl]}) {
		/call Magus
		}
	/if (${Template.Equal[Warlord Skarlon]}) {
		/call Warlord
		}
/return
   
Sub Tranixx
/if (${Zone.ID}==27) {
    /goto :endcombat
}

/if (${Zone.ID}==32) {
	/squelch /moveto loc -1356 -834
	/delay 5s !${Me.Moving}
	}
/if (${Zone.ID}==32) {
    /squelch /moveto loc -1433 -734
	/delay 5s !${Me.Moving}
	/varset missiondone 0
	/declare atcamp int local 0 
	}

	:meleeloop
	/if (${Zone.ID}==27) {
    /goto :endcombat
}
	/if (!${SpawnCount[npc invading]} && !${atcamp} && ${Zone.ID}==32) {
		/squelch /moveto loc -1433 -734
		/delay 5s !${Me.Moving}
		/face heading -23
		/varset atcamp 1
		}
	/doevents
	/if (${missiondone}) /goto :endcombat
	/assist ${Spawn[pc race Dragon]}
	/if (${Target.ID} && ${Target.Race.Name.NotEqual[Chest]}) {
		/varset targetid ${Target.ID}
		/varset atcamp 0
		/attack on
		/squelch /stick 12
		/goto :combatloop
		}
	/if (${Target.Race.Name.Equal[Chest]}) /squelch /target clear
	/goto :meleeloop
	
	:combatloop
	/doevents
	/if (${Me.Y}>-1360 && ${Zone.ID}==32) {
		/attack off
		/squelch /moveto loc ${Math.Calc[${Math.Rand[10]}-1456]} ${Math.Calc[${Math.Rand[10]}-746]}
		/delay 5s !${Me.Moving}
		/squelch /target clear
		}
	/if (!${Target.ID} || ${Target.ID}!=${targetid} || ${Target.Type.NotEqual[NPC]}) {
		/squelch /target clear
		/attack off
		/goto :meleeloop
		}
	/if (${Me.AltAbilityReady[Feral Rage]} && ${SpawnCount[npc invading radius 20]}>5 ) {
		/squelch /stick pause
		/alt act 1056
		/delay 1s
		/delay 10s !${Me.Casting.ID}
		/squelch /stick unpause
	}
	/if (${Me.AltAbilityReady[Shroud of Pain]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${Me.Buff[Shroud of Pain Recourse].ID}) {
		/squelch /stick pause
		/squelch /face fast
		/alt act 4176
		/delay 5
		/delay 10s !${Me.Casting.ID}
		/squelch /stick unpause
		}
	/if (${Me.AltAbilityReady[Abduction of Stength]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${Me.Buff[Ab. of Strength Recourse].ID}) {
		/squelch /stick pause
		/squelch /face fast
		/alt act 4177
		/delay 5
		/delay 10s !${Me.Casting.ID}
		/squelch /stick unpause
		}
	/if (${Me.AltAbilityReady[Mental Corruption]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${Me.Buff[Mental Corruption].ID}) {
		/squelch /stick pause
		/squelch /face fast
		/alt act 4178
		/delay 5
		/delay 10s !${Me.Casting.ID}
		/squelch /stick unpause
		}
	/goto :combatloop
	
	:endcombat
	/squelch /target clear
/return

Sub Magus
/if (${Zone.ID}==27) {
    /goto :endcombat
}
/if (${Zone.ID}==32) {
	/squelch /moveto loc -1356 -834
	/delay 5s !${Me.Moving}
	}
/if (${Zone.ID}==32) {
	/squelch /moveto loc -1413 -720
	/delay 5s !${Me.Moving}
	/varset missiondone 0
	/declare meleetarget int local 0
	/declare atcamp int local 0
    }
	:meleeloop
	/if (${Zone.ID}==27) {
    /goto :endcombat
}
	/if (!${SpawnCount[npc invading]} && !${atcamp} && ${Zone.ID}==32) {
		/squelch /moveto loc -1413 -720
		/delay 5s !${Me.Moving}
		/face heading -23
		/varset atcamp 1
		}
	/doevents
	/if (${missiondone}) /goto :endcombat
	/assist ${Spawn[pc race Dragon]}
	/if (${Target.ID} && ${Target.Race.Name.NotEqual[Chest]}) {
		/varset targetid ${Target.ID}
		/varset meleetarget 0
		/varset atcamp 0
		/goto :combatloop
		}
	/if (${Target.Race.Name.Equal[Chest]}) /squelch /target clear
	/goto :meleeloop
	
	:combatloop
	/squelch /face fast
	/doevents
	/if (${Me.Y}>-1360 && ${Zone.ID}==32) {
		/attack off
		/squelch /moveto loc ${Math.Calc[${Math.Rand[10]}-1456]} ${Math.Calc[${Math.Rand[10]}-746]}
		/delay 5s !${Me.Moving}
		/squelch /target clear
		}
	/if (!${Target.ID} || ${Target.ID}!=${targetid} || ${Target.Type.NotEqual[NPC]}) {
		/squelch /target clear
		/attack off
		/goto :meleeloop
		}
	/if ((${Me.PctMana}<26 || ${Target.PctHPs}<30) && !${meleetarget}) {
		/varset meleetarget 1
		/attack on
		/squelch /stick 12
		/varset atcamp 0
		}
	/if (${Me.AltAbilityReady[Rend]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${meleetarget}) {
		/alt act 4172
		/delay 1s
		/delay 20s !${Me.Casting.ID}
		}
	/goto :combatloop
	
	:endcombat
/return
	
Sub Warlord
/if (${Zone.ID}==27) {
    /goto :endcombat
}
/if (${Zone.ID}==32) {
    /unequip mainhand
	/squelch /moveto loc -1356 -834
	/delay 5s !${Me.Moving}
	}
	/if (${Zone.ID}==32) {
	/squelch /moveto loc -1419 -729
	/delay 5s !${Me.Moving}
	/declare atcamp int local 0
	/varset missiondone 0
	}

	:meleeloop
	/doevents
	/if (${Zone.ID}==27) {
    /goto :endcombat
}
	/if (!${SpawnCount[npc invading]} && !${atcamp} && ${Zone.ID}==32) {
		/squelch /moveto loc -1419 -729
		/delay 5s !${Me.Moving}
		/face heading -23
		/varset atcamp 1
		}
	/if (${missiondone}) /goto :endcombat
	/assist ${Spawn[pc race Dragon]}
	/if (${Target.ID} && ${Target.Race.Name.NotEqual[Chest]}) {
		/varset targetid ${Target.ID}
		/varset atcamp 0
		/attack on
		/squelch /stick 12
		/goto :combatloop
		}
	/if (${Target.Race.Name.Equal[Chest]}) /squelch /target clear
	/goto :meleeloop

	:combatloop
	/doevents
	/if (${Me.Y}>-1360 && ${Zone.ID}==32) {
		/attack off
		/squelch /moveto loc ${Math.Calc[${Math.Rand[10]}-1456]} ${Math.Calc[${Math.Rand[10]}-746]}
		/delay 5s !${Me.Moving}
		/squelch /target clear
		}
	/if (!${Target.ID} || ${Target.ID}!=${targetid} || ${Target.Type.NotEqual[NPC]}) {
		/squelch /target clear
		/attack off
		/goto :meleeloop
		}
	/if (${Me.AltAbilityReady[Feral Rage]} && ${SpawnCount[npc invading radius 20]}>5) {
		/squelch /stick pause
		/alt act 1056
		/delay 1s
		/delay 10s !${Me.Casting.ID}
		/squelch /stick unpause
	}
	/goto :combatloop

	:endcombat
/return

Sub Nagafen
/if (${Zone.ID}==27) {
    /goto :endcombat
}
/if (${Zone.ID}==32) {
	/squelch /moveto loc -1356 -834
	/delay 5s !${Me.Moving}
	}
	/if (${Zone.ID}==32) {
	/squelch /moveto loc -1429 -777
	/delay 5s !${Me.Moving}
	/declare atcamp int local 0
	/varset missiondone 0
	}

	:naggymainloop
	/if (${Zone.ID}==27) {
    /goto :endcombat
}
	/if (${Target.Race.Name.Equal[Chest]}) /squelch /target clear
	/doevents
	/if (${Target.ID}==${Me.ID}) /target clear
	/if (!${SpawnCount[npc invading]} && !${atcamp} && ${Zone.ID}==32) {
		/squelch /moveto loc -1429 -777
		/delay 10s !${Me.Moving}
		/face heading -23
		/varset atcamp 1
		}
	/if (${SpawnCount[npc invading radius 100]}>0 && ${NearestSpawn[npc invading].Distance}<80) {
		/varset atcamp 0
		/if (${Target.Type.NotEqual[NPC]}) /squelch /target clear
		/if (${SpawnCount[npc enchanter radius 80]}>0) /target npc enchanter
		/if (!${Target.ID} && ${SpawnCount[npc cleric radius 80]}>0) /target npc cleric
		/if (!${Target.ID}) /target ID ${NearestSpawn[npc invading].ID}
		/attack on
		/varset targetid ${Target.ID}
		/goto :naggycombatloop
		}
	/if (${missiondone}) /goto :endcombat
	/goto :naggymainloop
	
	:naggycombatloop
	/doevents
	/if (${Math.Distance[-1396 -791 ${Me.Y} ${Me.X}]}>12.25) {
	/squelch /moveto loc -1400 -791
	}
	/if (${Target.Distance}>80) {
	/attack off
	/squelch /target clear
	}
	/if (!${Target.ID} || ${Target.ID}!=${targetid} || ${Target.Type.NotEqual[NPC]}) /goto :naggymainloop
	/squelch /face fast
	/if (${Me.AltAbilityReady[Dragon Roar]} && ${SpawnCount[npc invading radius 80]}>2) {
		/alt act 4062
		/delay 5
		/delay 1s !${Me.Casting.ID}
		}
	/if (${Me.AltAbilityReady[Lava Breath]} && ${SpawnCount[npc invading radius 80]}>2) {
		/alt act 4061
		/delay 5
		/delay 1s !${Me.Casting.ID}
		}
	/if (${Me.AbilityReady[Kick]}) {
	/doability "kick"
	/delay 5
	}
	/goto :naggycombatloop
	
	:endcombat
/return

Sub Priest1
/if (${Zone.ID}==27) {
    /goto :endcombat
}
/if (${Zone.ID}==32) {
	/squelch /moveto loc -1356 -834
	/delay 5s !${Me.Moving}
	}
/if (${Zone.ID}==32) {
	/squelch /moveto loc ${Math.Calc[${Math.Rand[4]}-1439]} ${Math.Calc[${Math.Rand[12]}-756]}
	/delay 5s !${Me.Moving}
	/declare healat int local 65
	/declare healtarget int local
	/declare healloop int local
	/varset missiondone 0
	/declare atcamp int local 0
	/declare healtimeout timer local
	}
	
	:combatcheck
	/doevents
	/if (${Zone.ID}==27) {
    /goto :endcombat
}
	/if (${Me.AltAbilityReady[Smoke Bomb]} && ${SpawnCount[npc invading radius 100]}>2 && ${Me.PctHPs}<80) {
        /target NPC
		/alt act 1052
		/delay 5
		/delay 1s !${Me.Casting.ID}
		/squelch /target clear
		}
	/if (!${SpawnCount[npc invading]} && !${atcamp} && ${Zone.ID}==32) {
		/squelch /moveto loc ${Math.Calc[${Math.Rand[4]}-1400]} ${Math.Calc[${Math.Rand[12]}-791]}
		/delay 10s !${Me.Moving}
		/face heading -23
		/varset atcamp 1
		}
	/if (${missiondone}) /goto :endcombat
	/if (${SpawnCount[pc cleric]}>1 && ${NearestSpawn[1,pc cleric].ID}>${NearestSpawn[2,pc cleric].ID}) {
		/varset healat 75
		} else {
		/varset healat 65
		}
	/call CheckHeal ${healat}
	/if (${Macro.Return}) /goto :heal
	
	/if (${missiondone}) /goto :endcombat
	/assist ${Spawn[pc race Dragon]}
	/if (${Target.ID} && ${Target.Race.Name.NotEqual[Chest]} && ${Target.Type.Equal[npc]}) {
		/varset targetid ${Target.ID}
		/varset atcamp 0
		/attack on
		/squelch /stick 12
		/goto :combatloop
		}
	/if (${Target.Race.Name.Equal[Chest]}) /squelch /target clear

    /if (${Me.PctMana}<50 && ${SpawnCount[npc invading]}==0 && ${Me.Standing}) { 
        /for loopcount 0 to ${Group.Members} 
        /tar ${Group.Member[${loopcount}]} 
    /if (${Target.PctHPs}<94) /goto :skipmed 
        /next loopcount 
        :medloop 
     /if (!${Me.Sitting}) /sit 
     /if (${SpawnCount[npc invading]}==0) /goto :medloop 
     :skipmed
     }
	
		
|	/if (!${SpawnCount[npc invading radius 200]} && ${Me.Standing} && ${Me.PctMana}>50 && !${Me.Casting.ID}) {
|   /sit
|    }
	/goto :combatcheck

	:combatloop
		/doevents
		/if (${SpawnCount[pc cleric]}>1 && ${NearestSpawn[1,pc cleric].ID}>${NearestSpawn[2,pc cleric].ID}) {
			/varset healat 75
			} else {
			/varset healat 65
			}
		/call CheckHeal ${healat}
		/if (${Macro.Return}) /goto :heal
		/if (${Me.AltAbilityReady[Smoke Bomb]} && ${SpawnCount[npc invading radius 100]}>2 && ${Me.PctHPs}<80) {
         /target NPC
		 /alt act 1052
		 /delay 5
		 /delay 1s !${Me.Casting.ID}
		 /squelch /target clear
		}
		/if (${Me.Y}>-1360 && ${Zone.ID}==32) {
		/attack off
		/if (${Zone.ID}==32) {
		/squelch /moveto loc ${Math.Calc[${Math.Rand[10]}-1446]} ${Math.Calc[${Math.Rand[12]}-756]}
		}
		/delay 5s !${Me.Moving}
		/squelch /target clear
			}
		/if (!${Target.ID} || ${Target.ID}!=${targetid} || ${Target.Type.NotEqual[NPC]}) /goto :combatcheck
	/goto :combatloop

	:heal
	/varset healtarget 0
	/for healloop 0 to ${Group.Members}
		[COLOR="Red"]/if (${Group.Member[${healloop}].Type.Equal[PC]}) {[/COLOR]
		/if (${Group.Member[${healloop}].PctHPs} < ${Group.Member[${healtarget}].PctHPs}) /varset healtarget ${healloop}
		[COLOR="Red"]}[/COLOR]
	/next healloop

	/attack off
	/squelch /stick off
	/squelch /target clear
	/target ID ${Group.Member[${healtarget}].ID}
	/delay 1s ${Target.ID}==${Group.Member[${healtarget}].ID}
        [COLOR="Red"]/if (!${Target.Type.Equal[PC]}) /return[/COLOR]
	/squelch /face fast
	/if (${Target.Distance}>135) {
	/squelch /stick 10
	/delay 3s !${Me.Moving}
	/squelch /stick off
	}
	/if (${Target.PctHPs}<94) { 
	/alt act 4145 
	/delay 1s

	/varset healtimeout 20s
	:waitforheal
	/if (${Target.PctHPs}>96) {
		/keypress duck
		/delay 5
		/keypress duck
		}
	/if (!${healtimeout}) /goto :abort
	/if (${Me.Casting.ID}) /goto :waitforheal
	:abort

	/delay 5
	/if (${Zone.ID}==32) {
	/squelch /moveto loc ${Math.Calc[${Math.Rand[4]}-1439]} ${Math.Calc[${Math.Rand[12]}-756]}
	}
	/delay 3s
	}
	/goto :combatcheck
	
	:endcombat
	/squelch /target clear
/return

Sub CheckHeal(int healat)
	/declare healtarget int local 0
	/declare healloop int local 0

	/for healloop 1 to ${Group.Members}
		[COLOR="Red"]/if (${Group.Member[${healloop}].Type.Equal[PC]}) {[/COLOR]
		/if (${Group.Member[${healloop}].PctHPs} < ${Group.Member[${healtarget}].PctHPs}) /varset healtarget ${healloop}
		[COLOR="Red"]}[/COLOR]
	/next healloop
        /if (${SpawnCount[npc invading]}==0) /varset healat 94
	/if (${Group.Member[${healtarget}].PctHPs} < ${healat}) /return 1
/return 0

Sub Priest2
/if (${Zone.ID}==32) {
	/squelch /moveto loc -1356 -834
	/delay 5s !${Me.Moving}
	}
/if (${Zone.ID}==32) {
	/squelch /moveto loc ${Math.Calc[${Math.Rand[10]}-1456]} ${Math.Calc[${Math.Rand[10]}-746]}
	/delay 5s !${Me.Moving}
	}
	/declare healat int local 65
	/declare healtarget int local
	/declare healloop int local
	/varset missiondone 0
	/declare atcamp int local 0
/return
   
|--
|##GM Sub for checking
|---------------------
Sub GM
	/if (${Spawn[gm].ID}) {
		/gsay Time to go, cya later
		/camp 
		/endmac
	}
/return 


|-
|# Chest popping
|----------------
Sub Event_Lastwave
	/squelch /stick off
	/squelch /moveto off
	/echo Task Completed, Getting In Line To Loot Shard!
	/if (${Me.Race.Name.Equal[Dragon]} && ${Me.Class.Name.Equal[Warrior]}) {
			/delay 1m
			}
	:again
	/if (${Zone.ID}==32) {
		/delay ${Math.Rand[5]}s
        /if (${Zone.ID}==32) {
        /squelch /moveto loc -1331 -828
        }
		/delay 20s !${Me.Moving}
        
        /delay ${Math.Rand[5]}s
		/if (${SpawnCount[npc object race chest]}) {
			/target ornate
			/squelch /stick 2
			/delay 2s ${Target.Distance}<5
			/open
			/delay 4s !${Target.ID}
			}

		/target ornate
		/delay 12s ${Target.ID}
		/loot 
		/delay 2s
		/if (${Window[LootWnd].Open}) {
			/if (${Corpse.Items}==1) {
				/itemnotify loot1 rightmouseup
				/itemnotify loot1 rightmouseup
				/delay 2s
				} else {
				/itemnotify loot2 rightmouseup 
				/itemnotify loot2 rightmouseup
				/delay 2s 
				}
			/if (${Window[ConfirmationDialogBox].Open}) /nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup 
			/delay 2s 
			/notify LootWnd DoneButton Leftmouseup 
			/delay 3s (!${Window[LootWnd].Open})
			/notify LootWnd DoneButton Leftmouseup 
			}
		/if (!${FindItem[Shard of Wisdom].InvSlot.ID}) {
		/goto :again
		}
		/popup Shard Looted, Task Completed!
		/echo Task Completed!  Good Job!
		/varset missiondone 1
		/varcalc success ${success}+1
		/echo Successful Missions: ${success}
		/echo Failed Missions: ${fail} 
		/if (${Me.Race.Name.Equal[Dragon]} && ${Zone.ID}==32) {
		/squelch /moveto loc -1379 -857
		}
		/if (${Me.Race.Name.Equal[Giant]} && ${Zone.ID}==32) {
		/squelch /moveto loc ${Math.Calc[${Math.Rand[10]}-1399]} ${Math.Calc[${Math.Rand[10]}-792]}
		}
		}   
/return


|--
|##Chat Events
|-------------
Sub Event_Chat(string ChatType,string ChatSender,string ChatText)
	/If (${ChatType.Equal[TELL]} && ${ChatText.Equal[${Password}]}) {
		/invite ${ChatSender}
		/taskaddplayer ${ChatSender}
		/return
		}
	/If (${ChatText.Equal[make me leader]}) {
		/makeleader ${ChatSender}
		/return
		}
/return

|--
|##Holds macro when you die
|--------------------------
Sub Event_Slain 
	:wait1
	/delay 1s
	/target myself
	/if (${Me.PctHPs}<5) /goto :wait1
	/if (!${Target.ID}) /goto :wait1
	/delay 3s
	/if (${Me.Race.Name.Equal[Dragon]} && ${Me.Class.Name.Equal[Warrior]}) {
	/fade
	}
	/if (${SpawnCount[pc race Dragon]}==0 && ${SpawnCount[pc]}<=2) {
	/fade
	}
/return 

|--
|##End Macro if you camp on your own
|-----------------------------------
Sub Event_Camping
	/echo Camping - Ending macro!
/endmacro

|--
|## Task Quitter
|-----------------
Sub Event_None 
/if (${Ini[naggychars.ini,NaggyChars,Lord Nagafen,NULL].Equal[${Me.Name}]}) {
/declare tempvar int local
/for tempvar 1 to ${Group.Members}
/taskremove ${Group.Member[${tempvar}]}
/next tempvar
/taskquit
}
/return

|--
|## Task Quit If Timer
|-----------------
Sub Event_Finished(Line,int TaskTime)
/varcalc TaskTime ${TaskTime}-1

/if (!${Ini[naggychars.ini,NaggyChars,Lord Nagafen,NULL].Equal[${Me.Name}]}) {
/return
}
/if (${TaskTime}<1) {
/echo Your Task Has Ended, Quitting Task
/declare tempvar int local
/for tempvar 1 to ${Group.Members}
/taskremove ${Group.Member[${tempvar}]}
/next tempvar
/taskquit
/return
}
/echo Waiting ${TaskTime} Minutes For Task Timer To Expire So We Can Start A New Mission.
/delay ${TaskTime}m
/if (${Ini[naggychars.ini,NaggyChars,Lord Nagafen,NULL].Equal[${Me.Name}]}) {
/declare tempvar int local
/for tempvar 1 to ${Group.Members}
/taskremove ${Group.Member[${tempvar}]}
/next tempvar
/taskquit
}
/return

|--
|## Still Have Mission Timer
|-----------------
Sub Wait
:waitmore1
/echo Mission Timer Still Active Waiting 20 Seconds And Trying Again
/delay 20s
/if (!${Window[TaskTemplateSelectWnd].Open}) /say Fierce Battles
/delay 3s
/if (!${Window[TaskTemplateSelectWnd].Open}) /goto :waitmore1
/return 

|---
| Incoming
|----------
sub Event_Incoming
/varcalc WaveNumber ${WaveNumber}+1
/echo Here Comes Wave ${WaveNumber}!
/if (${Me.Sitting}) {
/stand
}
/return


|---
| Buy AA's
|----------
sub BuyAAs
      /keypress i 
      /notify InventoryWindow IW_AltAdvBtn leftmouseup 
      /delay 1s
      /notify AAWindow AAW_LoadButton leftmouseup 
      /delay 1s
      /doevents
/return

sub Event_NoAAs
	/beep
	/beep
	/echo Buy all the AA's on the general tab. After you have finished please click save.
/return

sub Event_SomeTell
/echo Tell received.
/beep
/delay 10
/beep
/delay 10
/beep
/return

sub Event_NoMonster
/echo Monster Select Failed, Retrying
/call TemplateSelect
/call EnterMission
/return

sub TemplateSelect
	/declare tempvar int local
	/declare tempvar1 int local
	/if (${Template.Equal[Lord Nagafen]}) {
		/echo Selecting Lord Nagafen
		/notify TaskTemplateSelectWnd TaskTemplateSelectListRequired listselect ${Window[TaskTemplateSelectWnd].Child[TaskTemplateSelectListRequired].List[Lord Nagafen]} 
		/delay 10
		/notify TaskTemplateSelectWnd TaskTemplateSelectListRequired leftmouse ${Window[TaskTemplateSelectWnd].Child[TaskTemplateSelectListRequired].List[Lord Nagafen]} 
		/delay 10
		/notify TaskTemplateSelectWnd TaskTemplateSelectAcceptButton leftmouseup 
		/delay 5s 
		/return
	} else {
		/if (${Template.Equal[Priest Of Nagafen2]}) {
			/varset tempvar 1
			/varset Template Priest of Nagafen
			}
	   	/if (${Template.Equal[Priest Of Nagafen3]}) {
			/varset tempvar1 1
			/varset Template Priest of Nagafen
			}
		/echo Selecting ${Template}
		/notify TaskTemplateSelectWnd TaskTemplateSelectListOptional listselect ${Window[TaskTemplateSelectWnd].Child[TaskTemplateSelectListOptional].List[${Template}]} 
		/delay 10
		/notify TaskTemplateSelectWnd TaskTemplateSelectListOptional leftmouse ${Window[TaskTemplateSelectWnd].Child[TaskTemplateSelectListOptional].List[${Template}]} 
		/delay 10
		/notify TaskTemplateSelectWnd TaskTemplateSelectAcceptButton leftmouseup 
		/delay 5s 
		/if (${tempvar}) /varset Template Priest of Nagafen2
		/return
		/if (${tempvar1}) /varset Template Priest of Nagafen3
	}

	/echo Failed to locate correct character name in ${inichars}. Please update ${inichars} and add your character to a template.
/end
 
Thanks Ill give this a try
 
unfortunately, these fixes didnt work. It still does this same thing.
 
Almost seems worse now. I can literally do one or two before naggy gets killed because clerics arent healing or are getting hit too much to be able to heal. I may try setting it so they stay farther back after each round. It really looks like they stand in front of Naggy so they get initial aggro, but I dont know. is there anyone running Naggy with consistency? If its not runnable anymore it might be time to trash it.