The Nagafen Monster Mission Macro - BE CAREFUL RUNNING

Yeah I am pretty sure the bans work just as efficiently as the LS one.
 
what must i do to get this working, seeing the same "you do not have that ability" error, with all the toons standing around with their thumbs in their asses.

if this one isn't really supported anymore has another MM macro risen to take its place since i've been gone.. is there another 100% afk MM macro out there now?
 
Last edited:
what must i do to get this working, seeing the same "you do not have that ability" error, with all the toons standing around with their thumbs in their asses.

Seeing the last post in this thread was 4 years ago, it isn't really worth running.

But my guess would be that the ability problem would be that you haven't purchased the AA's required/saved them/made hotkeys for them.

Fry said:
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. The more priests you add to the mission the least likely you are to fail it.
 
  • Like
Reactions: EQDAB
wrong abilitys in macro

Ok I have spent all my aa's for each toon hotkeyed the respective abilitys yet eunning the macro stil yields the same errors. I have no issues going in and fixing the ability names, I'm fairly sure that's all that's wrong. How can I get a list of each toons abilitys?
 
Last edited:
  • Like
Reactions: EQDAB
Broke as of 12/25/08. Naggy will not auto use Dragon Roar. Macro also spams in EQ window "You don't have that ability." Priests do not auto heal. When I used this same macro a month ago each priest would attempt to heal any mission character that was not 100%, especially Naggy after the characters loaded his abilities. They no longer heal anything. The priest also spam in an EQ window "You don't have that ability." If you manually use Perfected Heal they also spam "You can't use that command while casting...".

I am not seeing enough to check the macro myself.

Thanks for any help in advance.

Been broken since 2008.

You can try /aa list all

Then compare that list to the alt activate numbers within the macro. See if it comes up with anything different.

Sent from my SAMSUNG-SGH-I317 using Tapatalk 4
 
Been broken since 2008.

well i just did a brand spanking new install of mmobugs MQ2 a few days ago and this macro came in it. just saying, if its in the release you'd think it'd be supported?
anyhow, i'm not asking anyone to fix it, i'll do myself, i just need to change out the old abilities that are incorrectly being called for with the new ones, likely just need to change a few lines. heck when i figure out which one are the broken ones, then what they have changed to, it would be as simple as a find/replace..
i'm just not quite sure how to get a list in game or out of each roles abilities.
 
  • Like
Reactions: EQDAB
There are a ton of macros that come with this build that don't work/shouldn't be used anymore due to security.

Start up the mission and use

/aa list all

That should show you all if your current alt abilities.

Sent from my SAMSUNG-SGH-I317 using Tapatalk 4
 
almost there

I have changed all the abilities to their new numbers. Only one left giving me any trouble is the preist heal ability its new name is perfect heal for the ch and the name hasn't changed for mend wounds but thw number dis so that was an easy fix just having issues with the ch.

Also there is some targeting issues, I didn't have time to work on last night but I'll dig into thw root cause of that this evening when I get off work.
 
  • Like
Reactions: EQDAB
I wouldn't advise using this with all the warping it does..
 
  • Like
Reactions: EQDAB
Kkthnx I think you are thinking of the Lavastorm MM that Fry wrote. This one is set in Naggy's lair and doesn't require warping as the mobs come to you.
 
  • Like
Reactions: EQDAB
Code:
Sub Tranixx
	/if (${Me.AltAbilityReady[Feral Rage]} && ${SpawnCount[npc invading radius 20]}>5 ) {
		/alt act 1056

	/if (${Me.AltAbilityReady[Shroud of Pain]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${Me.Buff[Shroud of Pain Recourse].ID}) {
		/alt act 4176
	
	/if (${Me.AltAbilityReady[Abduction of Stength]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${Me.Buff[Ab. of Strength Recourse].ID}) {
		/alt act 4177

	/if (${Me.AltAbilityReady[Mental Corruption]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${Me.Buff[Mental Corruption].ID}) {
		/alt act 4178
	

Sub Magus
	/if (${Me.AltAbilityReady[Rend]} && !${Me.Casting.ID} && ${Me.PctMana}>25 && !${meleetarget}) {
		/alt act 4172

	
Sub Warlord
	/if (${Me.AltAbilityReady[Feral Rage]} && ${SpawnCount[npc invading radius 20]}>5) {
		/alt act 1056


Sub Nagafen
	/if (${Me.AltAbilityReady[Dragon Roar]} && ${SpawnCount[npc invading radius 80]}>2) {
		/alt act 4062
	
	/if (${Me.AltAbilityReady[Lava Breath]} && ${SpawnCount[npc invading radius 80]}>2) {
		/alt act 4061
	
	/if (${Me.AbilityReady[Kick]}) {
	/doability "kick"


Sub Priest1
	/if (${Me.AltAbilityReady[Smoke Bomb]} && ${SpawnCount[npc invading radius 100]}>2 && ${Me.PctHPs}<80) {
        /target NPC
		/alt act 1052

		/if (${Me.AltAbilityReady[Smoke Bomb]} && ${SpawnCount[npc invading radius 100]}>2 && ${Me.PctHPs}<80) {
         /target NPC
		 /alt act 1052

	/alt act 4145

Here you can easily see what lines need to be changed. These are the old alt numbers. Do what riot suggested to get the new ones and pop them in. I don't recall what the main heal is for the priest and its not named but shouldn't be too hard to figure out.
Also, make sure you are putting a kick hotkey on your hotbar, or at the very least it should be in the combat skills menu, Alt-C and click one of the open buttons and select Kick.

I'd be surprised if this was all that needed to be changed, but you never know.
 
  • Like
Reactions: EQDAB
got the ability number changes done

As I stated earlier I have gotten all the ability numbers changed to thier new values. Just working on the priest's main heal which is called perfect heal and the ability number I don't remember off hand but I have it at home.

I think this macro might be broken in other ways as well. There were some targeting issues I saw spaming pre battle. That very well could have been its way of watching for the invaders to spawn and might not need any tweaking.
 
fixed!!

seems to be working as it was last time i used back in 2008..
well see if everything completes and restarts as intended but right its looking very clean.

i have not set the new ability numbers for Magus Rokyl.. so that role is stil borked

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 6056
		/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 7961
		/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 7962
		/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 7963
		/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 6056
		/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 7859
		/delay 5
		/delay 1s !${Me.Casting.ID}
		}
	/if (${Me.AltAbilityReady[Lava Breath]} && ${SpawnCount[npc invading radius 80]}>2) {
		/alt act 7858
		/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 6052
		/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 6052
		 /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 7930 
	/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[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
 
Last edited:
  • Like
Reactions: EQDAB
not 100% yet

Well' it will run one mission just fine, but Sony made it that when you finish the mission you are randomly (at least it seems to be random) dropped in I'd say about 100 range around the traveler. Now this macro already does a distance check every time before requesting a new mission. How ever the distance it allows for before trying to move back into range is too high. An easy fix. Its currently at 40, I'm wondering if anyone knows the max distance you can interact with an NPC is?

Just for the sake of testing the rest of the macro I changed mine to auto warp to the mission NPC after every mission skipping that check altogether. I don't not want to post that, once I fix the range NPC thing the right way i'll share it.
 
You could use moveutils, advpath or mq2navigation to just move your toons back to the questgiver. Don't want to use anything that might make you warp as that would just cause problems.
 
  • Like
Reactions: EQDAB
You could use moveutils, advpath or mq2navigation to just move your toons back to the questgiver. Don't want to use anything that might make you warp as that would just cause problems.

Agreed. I'll set to work on it again this evening when I get home. I tried to do some minor editing on my nexus7 7in pad but its a real pain in the ass. It shouldn't be to hard. I'm just not sure what range I should use.. I'm thinking better be on the safe side use a range of 10.
 
It was written in 2006, 16 years old, wow. I'm sure there will be problems,. Someone with some free time and a little macro experience should be able to fix it pretty easy.
 
  • Like
Reactions: EQDAB