• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
Resource icon

Release Hatchery.mac 2023-04-03

No permission to download
Joined
Dec 10, 2016
RedCents
3,125¢
Keep in mind if you run this macro you're in Plane of Knowledge!

Features:
- Automatic instance flipping until stopped
- PowerLevels up to 5 Characters
- Configurations for Self Buffs and Spells
- Enable/Disable Sitting during pull until below set percent HP
- Adds YourBard to MQ2AutoAccept automatically
- Tank pulls the entire hatchery back to the entrance
- YourBard is sent to Chords of Dissonance once Tank has aggro
- Made for 85 Heroic Shadowknight out of the box
-- Shadowknight will use AoE Aggro spells to hold mob aggro once they are all pulled
-- Supports up to 5 AoE Aggro Spells

Instructions:
- For quicker PowerLeveling make sure to /claim Gift of Legacies Lost. This box contains 10 free adventure potions for bonus experience!
- Setup PL group in front of Destrea
- By default this macro is made to run on a fresh heroic 85 Shadowknight.
-- If running a different level ShadowKnight modify Spells section.
- Make sure YourBard is the leader of your PowerLevel group.
- Make sure YourBard has Chords of Dissonance memmed in gem slot #1.
- Make sure you generate a Nav Mesh for The Hatchery before running the macro.
- Modify the top part of the file inserting YourTank's name, YourBard's name, and all your PLee's names. Also Enable/Disable the slots you are/aren't using.
Example:
Rich (BB code):
        /declare UsePlee1 bool outer TRUE
	/declare PLee1 string outer TheDruidsBard
	/declare UsePlee2 bool outer TRUE
	/declare PLee2 string outer TheDruidsToonGettingPL
- Once everything is configured run the macro on your Shadowknight with /ma Hathery. Your tank should get invited into the group to get the mission and drop after entering the mission.

Hatchery.mac
Rich (BB code):
#turbo 40
|------------------------------------------------------------|
|          Hatchery.mac
|
|      Last Modified by: TheDroidUrLookingFor
|				Version: 1.4.3
|
|	Requires: MQ2EQBC, MQ2Cast, MQ2Nav, MQ2AutoAccept, 
| and MQ2AdvPath
|
|	Information: A NavMesh for The Hatchery is required to run
| this macro. Modify you character names and such below.
| This macro assumes PLee1 is a level 10+ bard with the song
| Chant of Dissonance in gem1. It also assumes PLee1 is the
| group leader. All characters should be already at Destrea.
| This macro is meant to be run on the Tank doing the PL.
|
|	Bonus: Claim your Gift of Legacies Lost for 10 free 
| experience potions! This will really speed up the process.
|------------------------------------------------------------|
|------------------------------------------------------------|
|          Includes
|------------------------------------------------------------|
	#include MQ2Cast_Spell_Routines.inc
	#define CASTMODE       "MQ2Cast"
|------------------------------------------------------------|
|          Defines
|------------------------------------------------------------|
	#define CHATMETHOD          "/bc"
	#define CHATMETHOD1       	"/echo"
	#define DEBUGCHAT			"/echo [DEBUG]"
|------------------------------------------------------------|
sub Declares
|---------------Start Edit-----------------------------------|
|---------------Toggles--------------------------------------|
	/declare SitOnPull bool outer TRUE
	/declare StopSit int outer 90
	/declare PauseAggro bool outer TRUE
	/declare ShowDebug bool outer FALSE
|---------------PLee Variables-------------------------------|
	/declare UsePlee1 bool outer TRUE
	/declare PLee1 string outer YourBard
	/declare UsePlee2 bool outer FALSE
	/declare PLee2 string outer YourPLee
	/declare UsePlee3 bool outer FALSE
	/declare PLee3 string outer YourPLee
	/declare UsePlee4 bool outer FALSE
	/declare PLee4 string outer YourPLee
	/declare UsePlee5 bool outer FALSE
	/declare PLee5 string outer YourPLee
|---------------Tank Name------------------------------------|
	/declare Tank string outer YourTank
	/declare TankMemSpells bool outer TRUE
	/declare TankStartBuff bool outer TRUE
	/declare UseTankBuff1 bool outer TRUE
	/declare TankBuff1 string outer Malarian Skin
	/declare TankBuffGem1 int outer 1
	/declare UseTankBuff2 bool outer TRUE
	/declare TankBuff2 string outer Remorseless Demeanor
	/declare TankBuffGem2 int outer 2
	/declare UseTankBuff3 bool outer TRUE
	/declare TankBuff3 string outer Drape of Korafax
	/declare TankBuffGem3 int outer 3
	/declare UseTankBuff4 bool outer TRUE
	/declare TankBuff4 string outer Shroud of the Plagueborn
	/declare TankBuffGem4 int outer 4
	/declare UseTankBuff5 bool outer TRUE
	/declare TankBuff5 string outer Amygdalan Horror
	/declare TankBuffGem5 int outer 5
	/declare UseTankBuff6 bool outer FALSE
	/declare TankBuff6 string outer Steely Stance
	/declare TankBuffGem6 int outer 6
|---------------Tank Spells----------------------------------|
	/declare UsePullTaunt1 bool outer TRUE
	/declare PullTaunt1 string outer Terror of Jelvalak
	/declare PullTauntGem1 int outer 6
	/declare UsePullTaunt2 bool outer TRUE
	/declare PullTaunt2 string outer Terror of the Soulbleeder
	/declare PullTauntGem2 int outer 7
	/declare UsePullTaunt3 bool outer TRUE
	/declare PullTaunt3 string outer Terror of Vergalid
	/declare PullTauntGem3 int outer 8
	/declare UseAoEAggro1 bool outer TRUE
	/declare AoEAggro1 string outer Burst of Spite
	/declare AoEAggroGem1 int outer 9
	/declare UseAoEAggro2 bool outer TRUE
	/declare AoEAggro2 string outer Revile
	/declare AoEAggroGem2 int outer 10
	/declare UseAoEAggro3 bool outer TRUE
	/declare AoEAggro3 string outer Vilify
	/declare AoEAggroGem3 int outer 11
	/declare UseAoEAggro4 bool outer TRUE
	/declare AoEAggro4 string outer Dread Gaze
	/declare AoEAggroGem4 int outer 12
	/declare UseAoEAggro5 bool outer FALSE
	/declare AoEAggro5 string outer 
	/declare AoEAggroGem5 int outer 4
|---------------Stop Edit------------------------------------|
	/declare CurrentVersion string outer 1.4.3
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Declares Exit
/return
sub Main
	:Setup
	CHATMETHOD Setting things up boss!
	/call CheckPlugin MQ2Cast
	/call CheckPlugin MQ2AutoAccept
	/call CheckPlugin MQ2AdvPath
	/call CheckPlugin MQ2Nav
	/call Declares
	/autoaccept add ${PLee1}
	/autoaccept save
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Hatchery PL Bot started! Version: ${CurrentVersion} Debug: ${ShowDebug}
	:StartupBuffs
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Checking ${Tank}'s self buffs.
	/call CheckTankBuffs
	:CheckSpells
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Checking ${Tank}'s memmed spells.
	/if (${TankMemSpells}) /call CheckSpellsMemmed
	:InviteTank
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Inviting ${Tank} with ${PLee1}.
	/squelch /bct ${PLee1} //invite ${Tank}
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Waiting for group with ${Tank}.
	/delay 300s ${Group.Member[${PLee1}].ID}
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Targetting Destrea with ${Tank}.
	/tar destrea
	/delay 1
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Getting mission with ${Tank}.
	/say investigate
	/delay 35s
	:SayReady
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Targetting Destrea with PLee's.
	/if (${UsePlee1}) /squelch /bct ${PLee1} //tar destrea
	/if (${UsePlee2}) /squelch /bct ${PLee2} //tar destrea
	/if (${UsePlee3}) /squelch /bct ${PLee3} //tar destrea
	/if (${UsePlee4}) /squelch /bct ${PLee4} //tar destrea
	/if (${UsePlee5}) /squelch /bct ${PLee5} //tar destrea
	/delay 5s
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Sending PLee's into the instance.
	/if (${UsePlee1}) /squelch /bct ${PLee1} //say ready
	/if (${UsePlee2}) /squelch /bct ${PLee2} //say ready
	/if (${UsePlee3}) /squelch /bct ${PLee3} //say ready
	/if (${UsePlee4}) /squelch /bct ${PLee4} //say ready
	/if (${UsePlee5}) /squelch /bct ${PLee5} //say ready
	/delay 5s
	:TankEnter
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> ${Tank} attempting to enter instance.
	CHATMETHOD Attempting to enter instance on Tank
	/say ready
	:InsideHatchery
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Waiting till in Hatchery zone.
	/delay 300s ${Zone.Name.Equal[Hatchery Wing]}
	CHATMETHOD Leaving group on Tank
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Leaving group on ${Tank}.
	/disband
	CHATMETHOD All PLee's should be in Hatchery now!
	:RoundUpMobs
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Beginning roundup procedure.
	/call NavigatePLZone
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Waiting for mobs to get to entrance.
	/delay 10s
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Aggroing mobs so bard isn't sent to their death.
	/if (${Me.SpellReady[${AoEAggro1}]} && ${UseAoEAggro1}) /call CASTMODE "${Spell[${AoEAggro1}].RankName}" "gem${AoEAggroGem1}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro2}]} && ${UseAoEAggro2}) /call CASTMODE "${Spell[${AoEAggro2}].RankName}" "gem${AoEAggroGem2}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro3}]} && ${UseAoEAggro3}) /call CASTMODE "${Spell[${AoEAggro3}].RankName}" "gem${AoEAggroGem3}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro4}]} && ${UseAoEAggro4}) /call CASTMODE "${Spell[${AoEAggro4}].RankName}" "gem${AoEAggroGem4}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro5}]} && ${UseAoEAggro5}) /call CASTMODE "${Spell[${AoEAggro5}].RankName}" "gem${AoEAggroGem5}" 5s
	/delay 3s ${Cast.Ready}
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Sending ${PLee1} into position.
	/squelch /bct ${PLee1} //nav locxyz -54.71 1.89 7.15
	/squelch /bct ${PLee1} //twist 1
	:WaitForMobs
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Keeping aggro on all the mobs in camp.
	/if (${Me.SpellReady[${AoEAggro1}]} && ${UseAoEAggro1}) /call CASTMODE "${Spell[${AoEAggro1}].RankName}" "gem${AoEAggroGem1}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro2}]} && ${UseAoEAggro2}) /call CASTMODE "${Spell[${AoEAggro2}].RankName}" "gem${AoEAggroGem2}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro3}]} && ${UseAoEAggro3}) /call CASTMODE "${Spell[${AoEAggro3}].RankName}" "gem${AoEAggroGem3}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro4}]} && ${UseAoEAggro4}) /call CASTMODE "${Spell[${AoEAggro4}].RankName}" "gem${AoEAggroGem4}" 5s
	/delay 3s ${Cast.Ready}
	/if (${Me.SpellReady[${AoEAggro5}]} && ${UseAoEAggro5}) /call CASTMODE "${Spell[${AoEAggro5}].RankName}" "gem${AoEAggroGem5}" 5s
	/if (${SitOnPull} && ${Me.Standing} && ${Me.PctHPs} > ${StopSit}) /sit
	/delay 1s
	/if (${SpawnCount[npc targetable radius 60 zradius 50 noalert 3]}==0) /goto :KilledDaMobs
	/if (${Me.XTarget[1].ID}) /goto :WaitForMobs
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Mobs clear moving on.
	/delay 10s !${Me.XTarget[1].ID}
	:KilledDaMobs
	/if (!${Me.Standing}) /stand
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Everythings dead lets roll out!
	CHATMETHOD All mobs should be dead now!
	/delay 2s
	:PLeeExitZone
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to stop twist on PLee1.
	/if (${UsePlee1}) /squelch /bct ${PLee1} //twist clear
	/delay 1s
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to taskquit on PLees.
	/if (${UsePlee1}) /squelch /bct ${PLee1} //taskquit
	/if (${UsePlee2}) /squelch /bct ${PLee2} //taskquit
	/if (${UsePlee3}) /squelch /bct ${PLee3} //taskquit
	/if (${UsePlee4}) /squelch /bct ${PLee4} //taskquit
	/if (${UsePlee5}) /squelch /bct ${PLee5} //taskquit
	/delay 2s
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to send all PLees out of zone!
	/if (${UsePlee1}) /squelch /bct ${PLee1} //nav locxyz -43.82 -33.27 4.04
	/delay 2s
	/if (${UsePlee1}) /squelch /bct ${PLee1} //moveto loc -32 -100 6
	/if (${UsePlee2}) /squelch /bct ${PLee2} //moveto loc -32 -100 6
	/if (${UsePlee3}) /squelch /bct ${PLee3} //moveto loc -32 -100 6
	/if (${UsePlee4}) /squelch /bct ${PLee4} //moveto loc -32 -100 6
	/if (${UsePlee5}) /squelch /bct ${PLee5} //moveto loc -32 -100 6
	/delay 2s
	/nav locxyz -43.82 -33.27 4.04
	/delay 20s !${Navigation.Active}
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Quitting task on ${Tank}.
	/taskquit
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to leave zone on ${Tank}.
	/moveto loc -32 -100 6
	/delay 5s
	CHATMETHOD All PLee's should be out of zone and task!
	:TankExitZone
	/delay 300s ${Zone.Name.Equal[The Plane of Knowledge]}
	CHATMETHOD Tank is in Plane of Knowledge starting over!
	/goto :CheckSpells
/return
Sub CheckPlugin(string pluginname)
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> CheckPlugin(${pluginname}) Entry
	/if (!${Bool[${Plugin[${pluginname}]}]}) {
		/squelch /plugin ${pluginname}
		CHATMETHOD ${pluginname} not detected! This macro requires it! Loading ...
	}
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> CheckPlugin(${pluginname}) Exit
/return
Sub CheckTankBuffs
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> CheckTankBuffs Entry
	/if (!${Me.Buff[${Spell[${TankBuff1}].RankName}].ID} && ${UseTankBuff1}) /call CASTMODE "${Spell[${TankBuff1}].RankName}" "gem${TankBuffGem1}" 15s
	/if (!${Me.Buff[${Spell[${TankBuff2}].RankName}].ID} && ${UseTankBuff2}) /call CASTMODE "${Spell[${TankBuff2}].RankName}" "gem${TankBuffGem2}" 15s
	/if (!${Me.Buff[${Spell[${TankBuff3}].RankName}].ID} && ${UseTankBuff3}) /call CASTMODE "${Spell[${TankBuff3}].RankName}" "gem${TankBuffGem3}" 15s
	/if (!${Me.Buff[${Spell[${TankBuff4}].RankName}].ID} && ${UseTankBuff4}) /call CASTMODE "${Spell[${TankBuff4}].RankName}" "gem${TankBuffGem4}" 15s
	/if (!${Me.Buff[${Spell[${TankBuff5}].RankName}].ID} && ${UseTankBuff5}) /call CASTMODE "${Spell[${TankBuff5}].RankName}" "gem${TankBuffGem5}" 15s
	/if (!${Me.Buff[${Spell[${TankBuff6}].RankName}].ID} && ${UseTankBuff6}) /call CASTMODE "${Spell[${TankBuff6}].RankName}" "gem${TankBuffGem6}" 15s
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> CheckTankBuffs Exit
/return
Sub CheckSpellsMemmed
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> CheckSpellsMemmed Entry
	/if ((!${Me.Gem[${PullTaunt1}]} || ${Me.Gem[${PullTauntGem1}].Name.NotEqual[${PullTaunt1}]}) && ${UsePullTaunt1}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${PullTaunt1}].RankName} in ${PullTauntGem1}.
		/memspell ${PullTauntGem1} "${Spell[${PullTaunt1}].RankName}"
		/delay 5s ${Me.Gem[${PullTauntGem1}].Name.Equal[${PullTaunt1}]}
	}
	/if ((!${Me.Gem[${PullTaunt2}]} || ${Me.Gem[${PullTauntGem2}].Name.NotEqual[${PullTaunt2}]}) && ${UsePullTaunt2}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${PullTaunt2}].RankName} in ${PullTauntGem2}.
		/memspell ${PullTauntGem2} "${Spell[${PullTaunt2}].RankName}"
		/delay 90s ${Me.Gem[${PullTauntGem2}].Name.Equal[${PullTaunt2}]}
	}
	/if ((!${Me.Gem[${PullTaunt3}]} || ${Me.Gem[${PullTauntGem3}].Name.NotEqual[${PullTaunt3}]}) && ${UsePullTaunt3}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${PullTaunt3}].RankName} in ${PullTauntGem3}.
		/memspell ${PullTauntGem3} "${Spell[${PullTaunt3}].RankName}"
		/delay 90s ${Me.Gem[${PullTauntGem3}].Name.Equal[${PullTaunt3}]}
	}
	/if ((!${Me.Gem[${AoEAggro1}]} || ${Me.Gem[${AoEAggroGem1}].Name.NotEqual[${AoEAggro1}]}) && ${UseAoEAggro1}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${AoEAggro1}].RankName} in ${AoEAggroGem1}.
		/memspell ${AoEAggroGem1} "${Spell[${AoEAggro1}].RankName}"
		/delay 90s ${Me.Gem[${AoEAggroGem1}].Name.Equal[${AoEAggro1}]}
	}
	/if ((!${Me.Gem[${AoEAggro2}]} || ${Me.Gem[${AoEAggroGem2}].Name.NotEqual[${AoEAggro2}]}) && ${UseAoEAggro2}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${AoEAggro2}].RankName} in ${AoEAggroGem2}.
		/memspell ${AoEAggroGem2} "${Spell[${AoEAggro2}].RankName}"
		/delay 90s ${Me.Gem[${AoEAggroGem2}].Name.Equal[${AoEAggro2}]}
	}
	/if ((!${Me.Gem[${AoEAggro3}]} || ${Me.Gem[${AoEAggroGem3}].Name.NotEqual[${AoEAggro3}]}) && ${UseAoEAggro3}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${AoEAggro3}].RankName} in ${AoEAggroGem3}.
		/memspell ${AoEAggroGem3} "${Spell[${AoEAggro3}].RankName}"
		/delay 90s ${Me.Gem[${AoEAggroGem3}].Name.Equal[${AoEAggro3}]}
	}
	/if ((!${Me.Gem[${AoEAggro4}]} || ${Me.Gem[${AoEAggroGem4}].Name.NotEqual[${AoEAggro4}]}) && ${UseAoEAggro4}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${AoEAggro4}].RankName} in ${AoEAggroGem4}.
		/memspell ${AoEAggroGem4} "${Spell[${AoEAggro4}].RankName}"
		/delay 90s ${Me.Gem[${AoEAggroGem4}].Name.Equal[${AoEAggro4}]}
	}
	/if ((!${Me.Gem[${AoEAggro5}]} || ${Me.Gem[${AoEAggroGem5}].Name.NotEqual[${AoEAggro5}]}) && ${UseAoEAggro5}) {
		/if (${Me.Standing}) /sit
		/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to mem ${Spell[${AoEAggro5}].RankName} in ${AoEAggroGem5}.
		/memspell ${AoEAggroGem5} "${Spell[${AoEAggro5}].RankName}"
		/delay 90s ${Me.Gem[${AoEAggroGem5}].Name.Equal[${AoEAggro5}]}
	}
	/if (!${Me.Standing}) /stand
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> CheckSpellsMemmed Exit
/return
Sub BotMove(int x, int y, int z)
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> BotMove(${x} ${y} ${z}) Entry
	/nav locxyz ${x} ${y} ${z}
	/delay 300s !${Navigation.Active}
	/squelch /target clear
	/delay 10s !${Target.ID}
	/target ID ${NearestSpawn[npc].ID}
	/delay 10s ${Target.ID}
	/if (${Me.SpellReady[${PullTaunt1}]} && ${UsePullTaunt1}) {
		/if (${Me.SpellReady[${Spell[${PullTaunt1}].RankName}]} && ${UsePullTaunt1}) /call CASTMODE "${Spell[${PullTaunt1}].RankName}" "gem${PullTauntGem1}" 5s
	} else /if (${Me.SpellReady[${Spell[${PullTaunt2}].RankName}]} && ${UsePullTaunt2}) {
		/if (${Me.SpellReady[${Spell[${PullTaunt2}].RankName}]} && ${UsePullTaunt2}) /call CASTMODE "${Spell[${PullTaunt2}].RankName}" "gem${PullTauntGem2}" 5s
	} else {
		/if (${Me.SpellReady[${Spell[${PullTaunt3}].RankName}]} && ${UsePullTaunt3}) /call CASTMODE "${Spell[${PullTaunt3}].RankName}" "gem${PullTauntGem3}" 5s
	}
	/if (${PauseAggro}) /delay 2s ${Target.PctAggro}
	/squelch /target clear
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> BotMove(${x} ${y} ${z}) Exit
/return
Sub NavigatePLZone
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> NavigatePLZone Entry
	| Spot #1
	/call BotMove 10.02 31.56 3.95
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #1!
	| Spot #2
	/call BotMove 16.41 0.09 4.01
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #2!
	| Spot #3
	/call BotMove 14.36 -32.59 4.04
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #3!
	| Spot #4
	/call BotMove 145.22 -148.90 -20.10
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #4!
	| Spot #5
	/call BotMove 238.66 -271.61 -49.54
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #5!
	| Spot #6
	/call BotMove 347.92 -177.78 -86.51
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #6!
	| Spot #7
	/call BotMove 309.63 -26.02 -130.13
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #7!
	| Spot #8
	/call BotMove 310.07 31.20 -130.21
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #8!
	| Spot #9
	/call BotMove 617.68 -64.15 -21.43
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #9!
	| Spot #10
	/call BotMove 665.01 0.39 -21.41
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #10!
	| Spot #11
	/call BotMove 619.58 55.14 -21.42
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #11!
	| Spot #12
	/call BotMove 359.02 175.75 -86.47
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #12!
	| Spot #13
	/call BotMove 249.38 244.23 -53.73
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #13!
	| Spot #14
	/call BotMove 138.04 168.11 -17.99
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #14!
	| Spot #15
	/call BotMove 102.53 135.77 -20.22
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #15!
	| Spot #16
	/call BotMove 163.81 122.97 -20.91
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #16!
	| Spot #17
	/call BotMove 157.50 11.50 -28.97
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to spot #17!
	| Run back to entrance
	/call BotMove -53.88 9.62 4.04
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Attempting to move to zone entrance!
	/delay 300s !${Navigation.Active}
	/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> Rounded up all the mobs we could!
	CHATMETHOD I rounded up all the mobs I could boss!
/if (${ShowDebug}) DEBUGCHAT [${Macro.Name} @ ${Macro.CurLine}] ---> NavigatePLZone Exit
/return

Special Thanks: dannuic's Hatching a Plan Instance Flipping
 
Last edited:
Great timing will try it out !

- - - Updated - - -

-Which toons should i group before starting the macro?
-On which toons do i run the macro?
-Who should be group leader?
 
Couple things to note on assumptions here:

This macro assumes PLee1 is/has 3 things:
- They are a bard
- They are the leader of the group
- They have their damage song in the first gem slot

Also, it will mem the SK's spells for you.... but only when it goes to try to cast them for the first time. It would be best to mem them beforehand (making the gem specifications kind of overkill).

Also Also, this macro is to be run by the tank/SK.
 
Some addl instructions for noobs like me (maybe OP copy this to your post):
- on new toons, type /claim and look for Gift of Legacies Lost and use the free adventure potions!
- make sure you have MQ2NAV loaded with the right mesh for hatchery (/nav reload)
- your powerlevel toons go in one group together
- bard is the leader, he should have AE song in slot 1, i use the level 2 one works fine Chrords of Dissonance
- on your sk mem these spells to their slots before you start your macro (copy paste on your sk)
Rich (BB code):
/casting "Burst of Spite" 6
/casting "Revile" 7
/casting "Vilify" 8
/casting "Dread Gaze" 9
- your sk will get an invite from the bard but ofc to autoaccept it you need to have mq2autoaccept running:
Rich (BB code):
/plugin mq2autoaccept
/autoaccept add NAMEOFYOURBARD
/autoaccept save
- open notepad++ (download from ninite), paste the macro code, save as hatch.mac file
- put your bard, tank and other PL toons names here and make sure to edit FALSE into TRUE if you use those slots
Rich (BB code):
	/declare UsePlee1 bool outer TRUE
	/declare PLee1 string outer YourBard
	/declare UsePlee2 bool outer FALSE
	/declare PLee2 string outer YourPLee
	/declare UsePlee3 bool outer FALSE
	/declare PLee3 string outer YourPLee
	/declare UsePlee4 bool outer FALSE
	/declare PLee4 string outer YourPLee
	/declare UsePlee5 bool outer FALSE
	/declare PLee5 string outer YourPLee
- stand near the quest npc with all toons http://everquest.allakhazam.com/db/quest.html?quest=5767
- on your sk, who is not grouped, you type
Rich (BB code):
/mac hatch
Enjoy, thanks to OP and others who build this!


Some things i noticed happening:
- one of the mobs at 100% somewhere in the zone, macro will pause forever
- some of the plee toons would zone out of the hatchery and then wonder off in pok
 
Last edited:
I found this only happens when using ISBoxer :argh:

I do use it but for nothing more then window sizing and cpu balancing....

- - - Updated - - -
TheDroidUrLookingFor: can you please add some code that checks when there are 2 or less mobs on xtarget and not within range to also exit the instance and restart?

Lots of times 1 mob gets stuck behind a door and does not come to sk, and macro is stuck forever, thanks!
 
I do use it but for nothing more then window sizing and cpu balancing....

- - - Updated - - -
TheDroidUrLookingFor: can you please add some code that checks when there are 2 or less mobs on xtarget and not within range to also exit the instance and restart?

Lots of times 1 mob gets stuck behind a door and does not come to sk, and macro is stuck forever, thanks!

Depending on what version you're using there is already a check for that.

Rich (BB code):
/if (${SpawnCount[npc targetable radius 60 zradius 50 noalert 3]}==0) /goto :KilledDaMobs
 
Still working like a champ , just make sure you have the MQ2Twist plugin, otherwise you'll waste time like I did trying to find out why your bard doesn't start playing his song after stepping near your SK tank.
 
I'd like to add that this is still working, but I have a few questions, I have 2 SK's, ones an 85 heroic and the other is a 110, when I run the mac on the 85 sk it runs well and nice and fast, but when I run it on my 110 it runs really slowly, any idea whats going wrong?
 
I'd like to add that this is still working, but I have a few questions, I have 2 SK's, ones an 85 heroic and the other is a 110, when I run the mac on the 85 sk it runs well and nice and fast, but when I run it on my 110 it runs really slowly, any idea whats going wrong?

I believe this one you need to either A. mem the lower level spells on your 110 or B. update the macro to use the higher level version and ensure those are memmed --- its likely your dude is just not putting up ds and/or casting stuff
 
I changed the following to FALSE

Code:
|---------------Tank Name------------------------------------|
    /declare Tank string outer YourTank
    /declare TankMemSpells bool outer TRUE
    /declare TankStartBuff bool outer TRUE
 
I changed the following to FALSE

Code:
|---------------Tank Name------------------------------------|
    /declare Tank string outer YourTank
    /declare TankMemSpells bool outer TRUE
    /declare TankStartBuff bool outer TRUE

Awsome!
 
With a F2P 85 Heroic SK with no additional gear I was able to get to 50 before the mobs started killing the SK.
 
Ya i use a different hatching macro and use a merc. Gear on the SK starts to make a big difference though ive done up to 80 on a 105 SK but its way easier on a 110 SK with ROS TS Group Gear.
 
Ya i use a different hatching macro and use a merc. Gear on the SK starts to make a big difference though ive done up to 80 on a 105 SK but its way easier on a 110 SK with ROS TS Group Gear.

Great to know, thanks. I just want to be able to get toons to 75 so they can group with 105. I might get my PLer TBL so they can have conflag, but would need to be able to pl to 80 then. hrm
 
My 110 SK with conflagrant was able to (VERY VERY SLOWLY) get my toons to 75 until it stopped being time efficient. I copied and ripped apart this macro to make it work (with help from discord) with my 110 Necro breaking it into two separate pulls per instance, but it's too clunky to post just yet (FD sometimes fails, sometimes it fails to fire off the Sphere, it's got unused code originally in this mac, etc), plus it still suffers from the same bugs this mac has, such as toons acting weird if the instance is unable to load, or if the tank dies. I ended up just grinding my 5 level 75 toons to 80 with parking them in Loping Hills for a day with an 85 heroic pally.
 
How long it takes isnt really a concern its all afk anyway. I just used a 110 SK with no augs and just ROS Confl gear and auto grant AAs and it worked great. You would prob have a easier time using a real cleric though instead of a merc the worse gear you have on the SK makes the merc run oom sometimes. of course i make my SK turn his back to the mobs and sit constantly so the mobs hit you more.
 
on the 2nd round, I get a "the way is blocked" on my plee's and my sk jumps into the zone.. since he is the only in the zone, lol he gets wasted. Is there a check on the sk to make sure the group has zoned in prior or something?

So I just increased the delay on line 137 and that seemed to be ok.. though still would be better if there was someway to check all are zoned in to tighten up the delay.
 
Last edited:
on the 2nd round, I get a "the way is blocked" on my plee's and my sk jumps into the zone.. since he is the only in the zone, lol he gets wasted. Is there a check on the sk to make sure the group has zoned in prior or something?

So I just increased the delay on line 137 and that seemed to be ok.. though still would be better if there was someway to check all are zoned in to tighten up the delay.

There is a way to check if a group member is in the same zone as you or is missing. Really all you have to wait for is the first toon to zone in and it should be fine.
 
i believe
Code:
/delay 60s !${Group.AnyoneMissing}
on line 137 should work ok but a much longer condition can be used if needed can let me know
 
the increase in delay worked well for me and I didn't have an issue after that so not sure an increase in logic is needed imo, up to you either way though.... awesome mac btw and soooooooooooo helpful. thanks for the replies.
 
Damage shield kills the mobs, bard does just enough damage to get kill credit.

Typically you run this with one high level out of group and up to 5 low levels in their own group. The high level is supposed to "aggro-tank" the whole zone's worth of mobs and let their damage shield kill everything. The lowbie bard is doing an AE dmg song in the mix of mobs to get at least some dmg on each mob. If the high level doesn't do any real dmg, only DS, then the lowbie group gets the kill credit for everything since they did the most damage. Damage shields don't count toward dmg total for kill credit.

So this tends to work best with an SK as your high level. They get self DS and pure AE aggro generating spells. I've used self coded variations of this with a high level druid as the aggro tank. They get better DS than a similar level SK and can hold aggro via AE snare and self healing. Works a little faster and fine until the mobs are level 50-60.

You can also have outside toons in PoK that refresh DS/buffs on the SK before he goes in.
 
Self buff DS as the one from a clicky or a spell?

Suggestion:
- If using xp pot, can just one Plee enter zone and wait for SK to enter and do the pulling? delay entry of Plee's with xp pot till SK returns to facing corner with all mobs behind him. At that point Plee's can enter with theyr saved xp pot.
 
Depends on the level of PL toons you're going in with. You don't want the DS to kill the mobs during pull or before the bard can get some dmg in.

This macro is coded for SK self buffs to do the DS. See the Tank section of the code and it lets you set which spells the SK will rebuff itself with. You could add other things in there though or have a toon out of group that casts a DS on the SK before they go in.

The high level can have any form of DS they want as long as they stack. So an SK could have their self buffs + the DS from item AA + Scourge Skin SK AA + a mage/druid group DS + mage/druid short term DS's + Druid's Spirit of the Wood + bard DS songs (if in zone) + pots/clicky and even DS from some illusions assuming you don't overlap on stacking slot.

Some other PL tips and more info about running Hatching a Plan to PL lowbies.
 
I'll contribute a tip, while using a lvl 110 SK with "Honed Wurmslayer" there was hardly any damage due to the effect of Honed Wurmslayer, PL went smooth up to lvl 75 on all 5 toons.
 
I'll contribute a tip, while using a lvl 110 SK with "Honed Wurmslayer" there was hardly any damage due to the effect of Honed Wurmslayer, PL went smooth up to lvl 75 on all 5 toons.

Wouldnt that cause damage to each mob from rip and not give xp to the PL toons who're not in the SKs group ? Im not sure how that would work does the effect stop you from rip because you never actually take the damage ?
 
Riposte is minimal, you might sacrifice few mobs for favor of smooth operation (Considering you want this left in AFK mode). Also, SK will face wall in that corner, riposte almost none. This is only needed once mobs exceed *somehow* level 50.
 
I am running Hatchery.mac, after Plee lv75 , i need Merc healer to heal my sk prevent sk died.
how can i set Merc mode in hatchery.mac, I want to set it to passive mode before i pull.
and set to balance mode after back to camp.
==============================================================
NM, I got solution by myself.
 
Last edited:
Very good waypoints for pulling the zone. What was irritating me is all the editing needed before you could run this, it feels like work ! Noticed this when I was using different level SKs all the changing of the spells were just a pain.

So I unilaterally decided to change it (apologies/feelings)., TheDroidUrLookingFor may update the download if so desired.

Usage:
Setup:
Group up the PLees
Bard (preferred)/Class with AoE should be group leader (AoE in gem1)
Group up SK tank/puller
SK: spellset (spellgem doesn't matter) 2 aoe hate spells (max 4), 2 terror spells (max 4), lifetap (max 1), dico and a backitem with skinspikes equipped (I use 3 aoe/4 terrors/lifetap/dico)
If you have a wurmslayer make a bandolier named wurm (used for tanking)
Make a bandolier named noripo (used for pulling)
That is it for setup
/mac Hatchery

Actions:
Tank removes skinspikes if Bard undel level 40
Runs around pulling all the mobs
Does an AoE (to protect poor bard)
Clicks back item for skinspikes
Bard moves in and starts AoE song
Tank sits / casts aoe hate
When under 50% health does a lifetap on xtar1
Waits for mobs to die
Exits and repeats

Caveats: with all the leaving/joining of group the group sometimes gets bugged and tank has to manually zone to display in group.
Manually add SKs own damage shield at around level 50
Manually add Mage damage shield at around level 50
Do not close the quest window

Experience: Used this yesterday to level up, ran for 3 hours without interruption. The group lead was a mage with an AoE in gem1, still worked !

Updates:
  • mq2nav not always available on PLees so use /moveto
  • low level mobs (<40) died before a pulse of dot went off, added delay
  • now load mq2twist on the group lead
  • switches between 2 weapon sets noripo and wurm
  • waits for the twist to start on nonbards
  • chose better position for aoe toon
 

Attachments

Last edited:
Release Hatchery.mac

Users who are viewing this thread

Back
Top
Cart