The Nagafen Monster Mission Macro - BE CAREFUL RUNNING

lol whoops didnt know it was included in the current compiles :) I was using the one listed on page 1 of this thread LOL

Steve
 
I'm noticing two things:

1) Naggy isn't moving up to fight the mobs. He stays too far away and I constantly see OOR text. Once I move him up he's ok.

2) The support mobs are constantly trying to crowd into the same spot, and these are large models. Can they be spread out a little when they go into position between waves?

Also, I'm seeing "Need a target for stick" a lot in the MQ window. Ideas?
 
This has always happened, however I never go over 45 mins so I never worry about it. Is it causing you to exceed 45 mins per mission? Otherwise fixing it won't change anything.

eqisdead
 
Working fine for me.

A GM came into the zone with me today for one minute.

Was odd.
 
Had an 'oh shit' moment the other day. Woke up to find 2 of my toons standing at the LS zoneline to Nektulous. I am taking a ridiculous risk, all things considered...
 
There are alot of macro group running this 7 on my server 8 if you count me. I got bored and sent a tell to all the leaders to see if I can sneak in didnt work :(
 
Any way we can fix this thing so Naggy stop standing OOR from mobs? It's ridiculous. I keep moving him up so he can fight.
 
I was curious if it's possible to add a portion of code that if a new mission is not picked up, let's say, within 15 minutes of the other one ending the toons would /endmac, and camp out. If for some reason a toon gets bugged your character will sit and continuously ask for the mission. Was just curious if a check could be put in place as I'm an idiot when it comes to programing, that's why I switched to psychology in college, but frankly it didn't help either. Thanks for the help to anyone who decided to take a look at this.
 
I found something odd. I'm leveling a level 74 toon right now with this. If he exits the mission first (he plays Naggy), he gets 3.94% exp. If I remove another toon from the mission and have him exit first, THEN let the Naggy character exit, the Naggy toon gets 4.24% exp.

:confused: Why would he get .25% more for exiting second? It doesn't matter if I remove all the toons or just one, he always gets 4.24% on exiting after someone else.
 
Another bug to report. At the very end of the mission, there always seems to be one surviving enchanter. Always a female inky, too. None of the support NPCs see her, nor does Naggy until the end. Then he finally finishes her off and the script can end. I've found if I move Naggy to the chanter, suddenly the giants wake up and kill her quick.
 
seems with the new patch this is not working wount tar the chest and loot it.:( Or is it just me?
 
nope mines working just fine, I copied my .mac and .ini file that i was using previously and it worked fine.

Steve
 
Working fine here.

Also, instead of manually using aa's when you start a mission on a new toon. Simply activate /aaspend brute, then deactivate it after a few seconds.
 
what it not doing

whats it not doing not targeting the chest?
when i first used it i had to edit it to the type of chest it was " an ornate chest"
i think.
 
I didnt change anything tryed again last night and it worked fine. Kind of odd if u ask me lol.
 
Naggy.mac

Code:
|Naggy.mac v2.10 Coding by Fry, Z166204 Booges, Taron and JoeK
|Inspired by whycantiwin1
|Updated October 12nd, 2006
|
|-*-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.10
/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[naggychar.ini,NaggyChars,Lord Nagafen,NULL].Equal[${Me.Name}]}) /varset Template Lord Nagafen
/if (${Ini[naggychar.ini,NaggyChars,Priest Of Nagafen1,NULL].Equal[${Me.Name}]}) /varset Template Priest Of Nagafen
/if (${Ini[naggychar.ini,NaggyChars,Priest Of Nagafen2,NULL].Equal[${Me.Name}]}) /varset Template Priest Of Nagafen2
/if (${Ini[naggychar.ini,NaggyChars,Priest Of Nagafen3,NULL].Equal[${Me.Name}]}) /varset Template Priest Of Nagafen3
/if (${Ini[naggychar.ini,NaggyChars,King Tranixx,NULL].Equal[${Me.Name}]}) /varset Template King Tranixx
/if (${Ini[naggychar.ini,NaggyChars,Magus Rokyl,NULL].Equal[${Me.Name}]}) /varset Template Magus Rokyl
/if (${Ini[naggychar.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 NaggyChar.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 (${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"
	/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]}-1439]} ${Math.Calc[${Math.Rand[12]}-756]}
		/delay 5s !${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}
		/if (${Group.Member[${healloop}].PctHPs} < ${Group.Member[${healtarget}].PctHPs}) /varset healtarget ${healloop}
	/next healloop

	/attack off
	/squelch /stick off
	/squelch /target clear
	/target ID ${Group.Member[${healtarget}].ID}
	/delay 1s ${Target.ID}==${Group.Member[${healtarget}].ID}
	/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}
		/if (${Group.Member[${healloop}].PctHPs} < ${Group.Member[${healtarget}].PctHPs}) /varset healtarget ${healloop}
	/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[naggychar.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[naggychar.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[naggychar.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 2 Minutes And Trying Again
/delay 2m
/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

NaggyChar.ini

Code:
[NaggyChars]
Lord Nagafen=
Priest Of Nagafen1=
Priest Of Nagafen2=
King Tranixx=
Magus Rokyl=
Warlord Skarlon=
Priest Of Nagafen3=

Naggy2.mac to run it,
NaggyChar.ini is the character file.

A simple edit that allows you to run 2 versions of the macro on the same computer ( for 2 groups, I use it for cross server pling ).
 
Last edited:
over 500 AA's each for 5 toons in just over a month so far LOL

2500aa's AFk is definately worth my subscription here no problem, hell if i would've known i woulda upgraded to a lifetime when i had the chance

Steve
 
latest patch Thursday 9th August

Having issues looting chest on Nagafen character the other toons do not have a problem looting the shard after a successfull clearing.

Anyone else having a similar issue?