Here is 2 macros i made for automating the Fairy monster mission. One is for the attackers, and the other is for the person getting the mission, and looting the dust. This is almost all automated except getting the mission, and when you zone in with the "master" you need to start the macro. On the attackers it's fully automated. When they get a mission they zone in, start beating on the remains, then go to the shrine (via /warp) and will try to beat on that. After all shrines are dead they will wait 60sec. then zone out. The master mac will warp to the remains and loot the dust, then warp to a shrine and beat on it. When all shrines are dead they will warp to the begining and wait for 60sec and try to hide (to hopefully make sure none are dead before zoning out so everyone gets experience) and zone out. The master macro will attempt to destroy the dust, so be sure you have it in your top left inventory slot.
This macro uses /warp to go everywhere in this mission! Also if you can't loot the dust due to agro or if you already have one, you have to loot it manually. Also the dust must be in your top left inventory slot for it to be destroyed after the mission.
Here is the attacker macro
I am releasing these because i would very much like feedback on the actual macro code. I'm interested in hearing if i could do things better or more efficient! I'm sure i could but need some guidance. Also a thing to note, after the first automated Fairy MM macro came out i saw ALOT more people waiting by the zone in. The major thing that scared me was on the last MM i did i saw a groundspawn in there... you know the "Generic (SM)". I have NEVER seen a groundspawn in a fairy mm before! I might be paranoid thinking it was a GM watching me, but just be careful people, this will get nerfed like the other MM did. Speaking of which i did the Griffen MM and i saw a npc called "Test" that had that red gargoyle graphic. Very strange indeed. Anywho, be safe and please give me feedback on my macros!
This macro uses /warp to go everywhere in this mission! Also if you can't loot the dust due to agro or if you already have one, you have to loot it manually. Also the dust must be in your top left inventory slot for it to be destroyed after the mission.
Rich (BB code):
|Fairy DoD Mission Macro
|Fairymaster.mac
|Version .9n
|.9a - Added /attack off after last check for shrines
|.9b - Added another check for no target if someone kills
| your target while your dead in :Loop
|.9c - Added warping back to start of zone after your done killing
|.9d - Added /stick and /warp in the :Loop for after we die
|.9e - Added else if statement for queen so we wouldn't target corpse
|.9f - Adding warping to queen
|.9g - Modified end so everyone would zone out, added load aa
|.9h - Added code to warp/zone if you just died and mission is over
|.9i - Changed to warp to succor and increased the delay to 8s
|.9j - Added /face heading 90 to face west before pressing back
|.9k - Added /delay after all are dead so everyone gets exp.
|.9l - Went to master.mac, added esc keypress to clear inv. wnd at begining
|.9m - Added delay after /targeting queen due to her being missed right when she gets killed!
|.9n - Added check for zoning before pressing back to exit mission
#Event ImDead "You have been slain by#*#"
#Event Zoned "LOADING, PLEASE WAIT..."
#Event See "You cannot see your target."
sub main
/declare death int outer
/declare oldtarget int outer
/declare deadtarget int outer
/echo Fairy DoD Mission Macro Ver. .9n
/keypress i
/notify InventoryWindow IW_AltAdvBtn leftmouseup
/notify AAWindow AAW_LoadButton leftmouseup
/keypress esc
/keypress esc
/if (${Zone.ShortName.Equal[nektulosa_mmtomb]}) {
/echo This is where you are supposed to be!!
/echo Waiting for Queen to die!
/goto :queenwait
/goto :MainLoop
} else {
/echo You are NOT where you are supposed to be, instead your in ${Zone}!
}
/goto :MainLoop
/return
:MainLoop
/doevents
/delay 5
/goto :Queen
/goto :Shrine
/return
:Queen
/keypress esc
/target queen
/if (!${Target.ID}) {
/echo NO Queen!
/goto :Shrine
} else {
/echo We found the Queen!
/varset oldtarget ${Target.ID}
/cadewarp target
/stick 15
/goto :Loop
}
/if (${Target.Type.Equal[Corpse]}) {
/goto :Shrine
} else {
/cadewarp target
/stick 15
/goto :Loop
}
/stick off
/return
:Shrine
/keypress esc
/target A Fairy Shrine
/if (!${Target.ID}) {
/echo NO Shrines!
/echo Zone out now, mission complete!
/attack off
/cadewarp succor
/face heading 90
/doability hide
/echo Waiting 100sec. for dead peeps!
/delay 100s
/keypress back hold
/delay 8s
/goto :destroy
} else {
/echo We found a shrine!
/varset oldtarget ${Target.ID}
/cadewarp target
}
/if (${Target.Type.Equal[Corpse]}) {
/echo The Shrine is dead! Looking for another one!
/varset deadtarget ${Target.ID}
/target A Fairy Shrine next
} else {
/stick 15
/goto :Loop
}
/if (${deadtarget} ${Target.ID}) {
/target A Fairy Shrine next
}
/if (!${Target.Type.Equal[Corpse]}) {
/stick 15
/cadewarp target
/varset oldtarget ${Target.ID}
/goto :Loop
}
/if (${Target.Type.Equal[Corpse]}) {
/echo We must have killed them all! W00T!
/attack off
/cadewarp succor
/face heading 90
/echo Waiting 60sec. for dead peeps!
/doability hide
}
/delay 60s
:endwait
/target clear
/target ${Group.Member[0]}
/if (!${Target.ID}) {
/goto :endwait
} else {
/keypress back hold
/delay 8s
/goto :destroy
}
/goto :Shrine
/stick off
/return
:Loop
/doevents
/if (!${Target.ID}) {
/target ID ${oldtarget}
/cadewarp target
}
/if (!${Target.ID}) {
/goto :Shrine
}
/if (${Target.Type.Equal[Corpse]}) {
/goto :Shrine
}
/delay 2
/attack on
|/delay 5s
/if (${Me.Combat}) /goto :Loop
/if (!${Target.ID}) {
/attack off
/keypress forward
/keypress back
/stick off
}
/goto :Loop
/echo Returning you to the macro
/return
:queenwait
/target queen
/delay 4s
/target queen
/if (!${Target.ID}) {
/echo No queen around here buddy, she packed up and left!
/goto :Shrine
}
/if (!${Target.Type.Equal[Corpse]}) {
/goto :queenwait
}
/if (${Target.Type.Equal[Corpse]}) {
/echo she's dead now! waiting 15sec.
/delay 15s
/cadewarp target
/delay 2s
/call loot
}
/goto :Shrine
/return
| - Added on .9M release!
:destroy
/echo Looking for dust to destroy!
/if (${Zone.ID[25]}) {
/goto :doit
} else {
/goto :destroy
}
:doit
/delay 5s
/itemnotify pack1 leftmouseup
/if (${Cursor.Name.Find[Noknok's]}) {
/destroy
}
/return
Sub Loot
/declare t int outer 0
/declare loottotal int outer
/declare lootslot int outer
/declare lootleft int outer 0
/if (!${Defined[Param0]}) {
} else {
/varset lootleft ${Param0}
}
/loot
| -----------------
| -- Count items --
| -----------------
/delay 3s
:LootLag
/if (${loottotal}!=${Corpse.Items}) {
/varset loottotal ${Corpse.Items}
/delay 2s
/goto :LootLag
}
/if (${loottotal}<=${lootleft}) {
/notify LootWnd DoneButton leftmouseup
/return
}
/varset loottotal ${Math.Calc[${Corpse.Items}-${lootleft}]}
| ---------------------
| -- Loot the corpse --
| ---------------------
/for lootslot 1 to ${loottotal}
:LootItem
/itemnotify loot${lootslot} rightmouseup
/delay 5 !${Corpse.Item[${lootslot}].ID}
/if (!${Corpse.Item[${lootslot}].ID}) {
/next lootslot
} else {
/goto :LootItem
}
| -----------------
| -- Doublecheck --
| -----------------
/if (${Math.Calc[${Corpse.Items}-${lootleft}]}>0) /goto :LootLag
/notify LootWnd DoneButton leftmouseup
/return
Sub Event_ImDead
/echo We are dead =[
/varcalc death ${death}+1
/return
Sub Event_Zoned
/if (${Zone.ShortName.Equal[nektulosa_mmtomb]}) {
/echo We died ${death} times!
} else {
/echo You must have finished the mission!
/endmacro
}
/return
Sub Event_See
/keypress back hold
/delay 3
/keypress back
/attack off
/return
/return
Here is the attacker macro
Rich (BB code):
|Fairy DoD Mission Macro
|Fairy.mac
|Version .9p
|.9a - Added /attack off after last check for shrines
|.9b - Added another check for no target if someone kills
| your target while your dead in :Loop
|.9c - Added warping back to start of zone after your done killing
|.9d - Added /stick and /warp in the :Loop for after we die
|.9e - Added else if statement for queen so we wouldn't target corpse
|.9f - Adding warping to queen
|.9g - Modified end so everyone would zone out, added load aa
|.9h - Added code to warp/zone if you just died and mission is over
|.9i - Changed to warp to succor and increased the delay to 8s
|.9j - Added /face heading 90 to face west before pressing back
|.9k - Added /delay after all are dead so everyone gets exp.
|.9l - Added stuff to accept mission and zone in, VERY messy =[
|.9m - Added GMCheck, changed around waitformission to actually work
|.9n - Fixed waiting for mission code, now it works!
|.9o - Added check for zoning before pressing back to exit mission
|.9p - Added random wait to enter mission so it wouldn't be obvious we macro!
#Event ImDead "You have been slain by#*#"
#Event Zoned "LOADING, PLEASE WAIT..."
#Event Zoned2 "You have entered#*#"
#Event See "You cannot see your target."
#Event Mission "You have been assigned the task #*#"
sub main
/declare wait int outer
/declare death int outer
/declare oldtarget int outer
/declare deadtarget int outer
/echo Farie Macro started! Version .9p
/call GMCheck
/declare Zn int outer
/keypress i
/notify InventoryWindow IW_AltAdvBtn leftmouseup
/notify AAWindow AAW_LoadButton leftmouseup
/if (${Zone.ShortName.Equal[nektulosa_mmtomb]}) {
/echo This is where you are supposed to be!!
/goto :MainLoop
} else {
/echo You are NOT where you are supposed to be, instead your in ${Zone}!
/echo Waiting for Monster Mission!
}
:Begin
/doevents
/goto :Begin
/goto :MainLoop
/return
:MainLoop
/doevents
/delay 5
/goto :Queen
/goto :Shrine
/return
:Queen
/keypress esc
/target queen
/if (!${Target.ID}) {
/echo NO Queen!
/goto :Shrine
} else {
/echo We found the Queen!
/varset oldtarget ${Target.ID}
/cadewarp target
/stick 15
/goto :Loop
}
/if (${Target.Type.Equal[Corpse]}) {
/goto :Shrine
} else {
/cadewarp target
/stick 15
/goto :Loop
}
/stick off
/return
:Shrine
/keypress esc
/target A Fairy Shrine
/if (!${Target.ID}) {
/echo NO Shrines!
/echo Zone out now, mission complete!
/attack off
/cadewarp succor
/face heading 90
/doability hide
/echo Waiting 100sec. for dead peeps!
/delay 100s
/keypress back hold
/delay 8s
/goto :waitformission
} else {
/echo We found a shrine!
/varset oldtarget ${Target.ID}
/cadewarp target
}
/if (${Target.Type.Equal[Corpse]}) {
/echo The Shrine is dead! Looking for another one!
/varset deadtarget ${Target.ID}
/target A Fairy Shrine next
} else {
/stick 15
/goto :Loop
}
/if (${deadtarget} ${Target.ID}) {
/target A Fairy Shrine next
}
/if (!${Target.Type.Equal[Corpse]}) {
/stick 15
/cadewarp target
/varset oldtarget ${Target.ID}
/goto :Loop
}
/if (${Target.Type.Equal[Corpse]}) {
/echo We must have killed them all! W00T!
/attack off
/cadewarp succor
/face heading 90
/echo Waiting 60sec. for dead peeps!
/doability hide
}
/delay 60s
:endwait
/target clear
/target ${Group.Member[0]}
/if (!${Target.ID}) {
/goto :endwait
} else {
/keypress back hold
/delay 8s
/goto :waitformission
}
/goto :Shrine
/stick off
/return
:Loop
/doevents
/if (!${Target.ID}) {
/target ID ${oldtarget}
/cadewarp target
}
/if (!${Target.ID}) {
/goto :Shrine
}
/if (${Target.Type.Equal[Corpse]}) {
/goto :Shrine
}
/delay 2
/attack on
|/delay 5s
/if (${Me.Combat}) /goto :Loop
/if (!${Target.ID}) {
/attack off
/keypress forward
/keypress back
/stick off
}
/goto :Loop
/echo Returning you to the macro
/return
:waitformission
/if (!${Me.ID}) {
/delay 2s
/goto :waitformission
}
/if (${Zone.ID}==25) {
/echo We are in ${Zone} waiting for the mission!
}
:missionwait
/doevents
/goto :missionwait
Sub Event_Mission
/delay 1s
/notify TaskTemplateSelectWnd TaskTemplateSelectAcceptButton leftmouseup
/varset wait ${Math.Rand[30]}
/echo Waiting ${wait} seconds until we enter!
/delay ${wait}s
/face heading 90
/keypress up hold
/delay 20s
:cmon
/if (${Zone.ShortName.Equal[nektulosa_mmtomb]}) {
/call Main
}
/goto :cmon
Sub Event_ImDead
/echo We are dead =[
/varcalc death ${death}+1
/return
Sub Event_Zoned
/call GMCheck
/if (${Zone.ShortName.Equal[nektulosa_mmtomb]}) {
/echo We died ${death} times!
} else {
/echo You must have finished the mission!
}
/return
sub GMCheck
/if (${Bool[${Spawn[gm].ID}]}) {
/echo A GM or Guide has been detected. Waiting for five minutes to check again ...
/delay 300s
/call GMCheck
}
/return
Sub Event_See
/keypress back hold
/delay 3
/keypress back
/attack off
/return
/return
I am releasing these because i would very much like feedback on the actual macro code. I'm interested in hearing if i could do things better or more efficient! I'm sure i could but need some guidance. Also a thing to note, after the first automated Fairy MM macro came out i saw ALOT more people waiting by the zone in. The major thing that scared me was on the last MM i did i saw a groundspawn in there... you know the "Generic (SM)". I have NEVER seen a groundspawn in a fairy mm before! I might be paranoid thinking it was a GM watching me, but just be careful people, this will get nerfed like the other MM did. Speaking of which i did the Griffen MM and i saw a npc called "Test" that had that red gargoyle graphic. Very strange indeed. Anywho, be safe and please give me feedback on my macros!

