• 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

Project 2002 - Wayfarer's Haven Cleric Macro

Joined
Oct 5, 2012
RedCents
2,324¢
After playing Live EQ for a bit I decided to revisit P2002, or rather Wayfarer's Haven as it has been re-branded. A new client has been released, which takes us from Titanium to the Underfoot client. They plan to bring the game past PoP to Legacy of Ykesha and Lost Dungeons of Norrath now. I brushed off my old macros and found they needed some maintenance with some of the changes that happened, including a new MQ2 version being used. I've decided instead of trying to make all in one macros for archtypes (Healer, Caster DPS, etc) I should focus on making one for each class as I get them leveled, and more proficient in playing them. Since I already have a Cleric I stripped down my old Simple Healer macro and added a bit to it.

  • Debuffs for Mark of the Righteous and Mark of the King, timers and resets for both so they can be used on each NPC you're engaging (I have an enchanter so I often pull more than one enemy per encounter)
  • Auto click off Focus so Cleric self buff can be cast (they don't stack, and Cleric self buff has mana regen)
  • A way to send a tell for a HoT rather then have the macro auto cast HoTs (good for FD splitting or pulling, where an unwanted HoT could wipe your group)

For anyone playing WFH/P2002 I hope this helps, and if there are any problems just let me know. I'll do my best to fix them :)

**Place it in your MQ2 Macro folder, target the person you plan to have as your Main Assist, and /mac WFHClr to begin.
** I recommend having your Main Assist be someone you are controlling, because once your mana falls lower than 10% you will send a tell to them stating your are low on mana (less than 10%). You could always comment this out though.


[CODE lang="ini" title="Wayfarer's Haven Cleric"]

|++++++++++++++++++++++++++++++++
| Macro Information
|++++++++++++++++++++++++++++++++
| A Cleric Macro for Wayfarer's Haven
| Version 1.0
| Have fun and enjoy EverQuest!
|
| Target who you want to have as your Main Assist and start the macro.
|++++++++++++++++++++++++++++++++


#chat tell
#chat group
#turbo 40

#event Follow "#1# tells you, 'Follow'"
#event Stay "#1# tells you, 'Stay'"
#event ZoneType "You can only cast this spell in the outdoors."
#event ACbuff "#1# tells you, 'ACBuff'"
#event HPbuff "#1# tells you, 'HPBuff'"
#event SymbolBuff "#1# tells you, 'Symbol'"
#event ClericHoT "#1# tells you, 'CHoT'"
#event ClericDebuffTimer1Reset "##has been slain##"
#event ClericDebuffTimer1Reset "You gain party experience!!"
#event ClericDebuffTimer2Reset "##has been slain##"
#event ClericDebuffTimer2Reset "You gain party experience!!"

Sub Main

|++++++++++++++++++++++++++++++++
| General Information
|++++++++++++++++++++++++++++++++

/declare HealAtTANK int outer 70
/declare HoTAtTANK int outer 90
/declare HealAtOTHER int outer 80
/declare HealAtSham int outer 70
/declare AssistAt int outer 80
/declare AssistAtDis int outer 100
/declare ManaToNuke int outer 70
/declare UseMount int outer 1
/declare MountItem string outer "Black Rope Bridle"
/declare CompHeal outer "Complete Healing"
/declare CompHealMana int outer "400"
/declare SpellHeal outer "Supernal Light"
/declare SpellHealMana int outer "600"
/declare SpellHoT string outer "Supernal Elixir"
/declare SpellHoTMana int outer "400"
/declare SpellHoTTimer timer outer "0"
/declare ClrACBuff string outer "Hand of Virtue"
/declare ClrHPBuff string outer "Hand of Virtue"
/declare ClrSymbol string outer "Hand of Virtue"
/declare ClrSelfBuff1 string outer "Armor of the Zealot"
/declare ClrSelfBuff2 string outer "Armor of the Zealot"
/declare ClrSelfBuff3 string outer "Armor of the Zealot"
/declare ClericNuke1 string outer "Condemnation"
/declare ClericDebuff1 string outer "Mark of Kings"
/declare ClericDebuffTimer1 timer outer 0
/declare ClericDebuff2 string outer "Mark of the Righteous"
/declare ClericDebuffTimer2 timer outer 0
/declare MainAssist string outer ${Target.CleanName}
/declare ZoneType int outer 0
/declare count_grp int outer

/echo Wayfarer's Haven Cleric Macro has started
/echo Main Assist is ${MainAssist}
/echo Tank healed at ${HealAtTANK}
/echo Others healed at ${HealAtOTHER}
/echo Shamans healed at ${HealAtSham}

|+++++++++++++++++++++++++++++++++
| Main Loop
|+++++++++++++++++++++++++++++++++

:loop
/doevents
/if (${Me.Casting.ID} || ${Me.Moving}) /goto :loop
/call HoT
/call CheckHeals
/call Debuff1
/call Debuff2
/call Attack
/call ManaCheck
/call SelfBuffs
/call Buffs
/goto :loop
/return

|+++++++++++++++++++++++++++++++++

Sub HoT

/if (${Me.Class.ShortName.NotEqual[CLR]}) /return
/for count_grp 0 to ${Group}
/if (${Group.Member[${count_grp}].Class.Name.Equal[Warrior]} || ${Group.Member[${count_grp}].Class.Name.Equal[Shadow Knight]} || ${Group.Member[${count_grp}].Class.Name.Equal[Paladin]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HoTAtTANK} &&${Me.CurrentMana}>${SpellHoTMana} &&${Group.Member[${count_grp}].Distance}<=100 && ${SpellHoTTimer}==0) {
/target pc ${Group.Member[${count_grp}].Name}
/delay 3
/casting ${SpellHoT}|gem3 -maxtries|3
/if (${Macro.Return.Equal[CAST_SUCCESS]}) {
/varset SpellHoTTimer 240
}
}
/next count_grp
/return

|+++++++++++++++++++++++++++++++++

Sub CheckHeals

/for count_grp 0 to ${Group}
|+++++++++++++++++++++++++++++++++
| Tank ##check spell you're casting##
|+++++++++++++++++++++++++++++++++
/if (${Target.Type.Equal[CORPSE]}) /return
/if (${Group.Member[${count_grp}].Class.Name.Equal[Warrior]} || ${Group.Member[${count_grp}].Class.Name.Equal[Shadow Knight]} || ${Group.Member[${count_grp}].Class.Name.Equal[Paladin]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HealAtTANK} &&${Me.CurrentMana}>${CompHealMana} &&${Group.Member[${count_grp}].Distance}<=100) {
/target pc ${Group.Member[${count_grp}].Name}
/delay 3
/casting ${CompHeal}|gem1 -maxtries|3
}

|+++++++++++++++++++++++++++++++++
| Non Tanks
|+++++++++++++++++++++++++++++++++
/if (${Target.Type.Equal[CORPSE]}) /return
/if (${Group.Member[${count_grp}].Class.Name.Equal[Cleric]} || ${Group.Member[${count_grp}].Class.Name.Equal[Druid]} || ${Group.Member[${count_grp}].Class.Name.Equal[Beastlord]} || ${Group.Member[${count_grp}].Class.Name.Equal[Wizard]} || ${Group.Member[${count_grp}].Class.Name.Equal[Magician]} || ${Group.Member[${count_grp}].Class.Name.Equal[Necromancer]} || ${Group.Member[${count_grp}].Class.Name.Equal[Monk]} || ${Group.Member[${count_grp}].Class.Name.Equal[Rouge]} || ${Group.Member[${count_grp}].Class.Name.Equal[Bard]} || ${Group.Member[${count_grp}].Class.Name.Equal[Ranger]} || ${Group.Member[${count_grp}].Class.Name.Equal[Enchanter]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HealAtOTHER} &&${Me.CurrentMana}>${SpellHealMana} &&${Group.Member[${count_grp}].Distance}<=100) {
/squelch /target clear
/target pc ${Group.Member[${count_grp}].Name}
/delay 3
/casting ${SpellHeal}|gem2 -maxtries|3
}

|+++++++++++++++++++++++++++++++++
| Shaman
|+++++++++++++++++++++++++++++++++
/if (${Target.Type.Equal[CORPSE]}) /return
/if (${Group.Member[${count_grp}].Class.Name.Equal[Shaman]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HealAtSham} &&${Me.CurrentMana}>${SpellHealMana} &&${Group.Member[${count_grp}].Distance}<=100) {
/target pc ${Group.Member[${count_grp}].Name}
/delay 3
/casting ${SpellHeal}|gem2 -maxtries|3
}
/next count_grp

/return

|+++++++++++++++++++++++++++++++++
| Debuff 1
|+++++++++++++++++++++++++++++++++

Sub Debuff1
/if (${Me.Casting.ID}) /return
/if (${Me.PctMana}<${ManaToNuke}) /return
/if (${Target.Distance} > ${AssistAtDis}) /return
/if (${ClericDebuffTimer1} != 0) /return
/assist ${MainAssist}
/if (${Target.Type.NotEqual[NPC]} || ${Target.Type.Equal[PC]} || ${Target.Type.Equal[CORPSE]} || !${Target.ID} || !${Me.SpellReady[${ClericDebuff1}]} || ${Target.PctHPs} > ${AssistAt}) /return
/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs} < ${AssistAt} && ${ClericDebuffTimer1} == 0) {
/casting ${ClericDebuff1}|gem5 -maxtries|3 {
/if (${Macro.Return.Equal[CAST_SUCCESS]}) {
/varset ClericDebuffTimer1 2000
/echo ${ClericDebuff1} on ${Target.CleanName} SUCCESS!
/return
}
/if (${Macro.Return.Equal[CAST_RESIST]} || (${Macro.Return.Equal[CAST_CANNOTSEE]}) || (${Macro.Return.Equal[CAST_FIZZLE]}) || (${Macro.Return.Equal[CAST_INTERRUPTED]}) || (${Macro.Return.Equal[CAST_NOTARGET]})) {
/echo Could not cast ${ClericDebuff1} on ${Target.CleanName} UNSUCCESSFUL!
/return
}
}
}
/return

|+++++++++++++++++++++++++++++++++
| Debuff 2
|+++++++++++++++++++++++++++++++++

Sub Debuff2
/if (${Me.Casting.ID}) /return
/if (${Me.PctMana}<${ManaToNuke}) /return
/if (${Target.Distance} > ${AssistAtDis}) /return
/if (${ClericDebuffTimer2} != 0) /return
/assist ${MainAssist}
/if (${Target.Type.NotEqual[NPC]} || ${Target.Type.Equal[PC]} || ${Target.Type.Equal[CORPSE]} || !${Target.ID} || !${Me.SpellReady[${ClericDebuff1}]} || ${Target.PctHPs} > ${AssistAt}) /return
/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs} < ${AssistAt} && ${ClericDebuffTimer2} == 0) {
/casting ${ClericDebuff2}|gem6 -maxtries|3 {
/if (${Macro.Return.Equal[CAST_SUCCESS]}) {
/varset ClericDebuffTimer2 2000
/echo ${ClericDebuff2} on ${Target.CleanName} SUCCESS!
/return
}
/if (${Macro.Return.Equal[CAST_RESIST]} || (${Macro.Return.Equal[CAST_CANNOTSEE]}) || (${Macro.Return.Equal[CAST_FIZZLE]}) || (${Macro.Return.Equal[CAST_INTERRUPTED]}) || (${Macro.Return.Equal[CAST_NOTARGET]})) {
/echo Could not cast ${ClericDebuff2} on ${Target.CleanName} UNSUCCESSFUL!
/return
}
}
}
/return

|+++++++++++++++++++++++++++++++++
| Attack Spells
|+++++++++++++++++++++++++++++++++

Sub Attack
/if (${Me.Casting.ID}) /return
/if (${Me.PctMana}<${ManaToNuke}) /return
/if (${Target.Distance} > ${AssistAtDis}) /return
/assist ${MainAssist}
/if (${Target.Type.NotEqual[NPC]} || ${Target.Type.Equal[PC]} || ${Target.Type.Equal[CORPSE]} || !${Target.ID} || !${Me.SpellReady[${ClericNuke1}]} || ${Target.PctHPs} > ${AssistAt}) /return
/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs} < ${AssistAt}) {
/casting ${ClericNuke1}|gem7 -maxtries|3
/delay 2
}
}
/return

|+++++++++++++++++++++++++++++++++
| Mana
|+++++++++++++++++++++++++++++++++

Sub ManaCheck
/if (${UseMount}==1 && ${ZoneType}==0 && !${Me.Mount.ID}) {
/casting ${MountItem}|item
}
/if (${Me.Standing}&&!${Stick.Active}&&!${Me.Mount.ID}&&${Me.PctMana}<100&&${ZoneType}==1) {
/sit on
}
/if (${Me.PctMana} < 10) {
/t ${MainAssist} I have ${Me.PctMana}% mana.
}
/return

|+++++++++++++++++++++++++++++++++
| Self Buffs
|+++++++++++++++++++++++++++++++++

Sub SelfBuffs
/call ClickOffFocus
/if (${Me.Buff[${ClrSelfBuff1}].Duration}<5) {
/target ${Me} PC
/delay 1
/casting ${ClrSelfBuff1}|gem8 -maxtries|3
}
/if (${Me.Buff[${ClrSelfBuff2}].Duration}<5) {
/delay 1
/casting ${ClrSelfBuff2}|gem8 -maxtries|3
}
/if (${Me.Buff[${ClrSelfBuff3}].Duration}<5) {
/delay 1
/casting ${ClrSelfBuff3}|gem8 -maxtries|3
}
/return

|+++++++++++++++++++++++++++++++++
| Buffs
|+++++++++++++++++++++++++++++++++

Sub Buffs
/return

|+++++++++++++++++++++++++++++++++
| General Events
|+++++++++++++++++++++++++++++++++

Sub Event_Follow
/target ${MacroQuest.LastTell}
/delay 1
/tell ${MacroQuest.LastTell} Following you
/stick
/return

Sub Event_Stay
/stick off
/tell ${MacroQuest.LastTell} Staying here
/delay 1
/if (!${Me.Sitting}&&!${Stick.Active}&&!${Me.Moving}&&${Me.PctMana}<100) {
/sit on
}
/return

Sub Event_ZoneType
/varset ZoneType 1
/echo Adjusting to indoor zone!
/return

Sub ClickOffFocus
/declare i int local
/for i 1 to 20
/if ( ${Me.Buff[${i}].Name.Find[Khura's Focusing]} || ${Me.Buff[${i}].Name.Find[Focusing of the Seventh]} || ${Me.Buff[${i}].Name.Find[Beta Khura]}) {
/notify BuffWindow buff${Math.Calc[${i}-1].Int} leftmouseup
/next i
/echo Clicking off Focus now. Can now cast ${ClrSelfBuff1}.
}
/return

|+++++++++++++++++++++++++++++++++
| AC Buff
|+++++++++++++++++++++++++++++++++

Sub Event_ACBuff
/target ${MacroQuest.LastTell}
/delay 1
/tell ${MacroQuest.LastTell} Casting ${ClrACBuff} on you!
/casting ${ClrACBuff}|gem8 -maxtries|3
}
/return

|+++++++++++++++++++++++++++++++++
| HP Buff
|+++++++++++++++++++++++++++++++++

Sub Event_HPBuff
/target ${MacroQuest.LastTell}
/delay 1
/tell ${MacroQuest.LastTell} Casting ${ClrHPBuff} on you!
/casting ${ClrHPBuff}|gem8 -maxtries|3
}
/return

|+++++++++++++++++++++++++++++++++
| Symbol Buff
|+++++++++++++++++++++++++++++++++

Sub Event_SymbolBuff
/target ${MacroQuest.LastTell}
/delay 1
/tell ${MacroQuest.LastTell} Casting ${ClrSymbol} on you!
/casting ${ClrSymbol}|gem8 -maxtries|3
}
/return

|+++++++++++++++++++++++++++++++++
| Cleric HoT
|+++++++++++++++++++++++++++++++++

Sub Event_ClericHoT
/if (${Me.Casting.ID} || ${Me.Moving} || ${Me.Combat}) {
/tell ${MacroQuest.LastTell} I am currently busy, try again later.
/return
}
/target ${MacroQuest.LastTell}
/delay 1
/tell ${MacroQuest.LastTell} Casting ${SpellHoT} on you!
/casting ${SpellHoT}|gem3 -maxtries|3
}
/return

|+++++++++++++++++++++++++++++++++
| Cleric Debuff Timer Resets
|+++++++++++++++++++++++++++++++++

Sub Event_ClericDebuffTimer1Reset
/if (${ClericDebuffTimer1}!=0) {
/varset ClericDebuffTimer1 0
}
/return

Sub Event_ClericDebuffTimer2Reset
/if (${ClericDebuffTimer2}!=0) {
/varset ClericDebuffTimer2 0
}
/return

[/CODE]
 

Attachments

@Redbot

So I found some info on Project Lazarus. Seems they're running the RoF client. Found this on reddit:

Project Lazarus on EQEMU Launching GoD March 27th
renderTimingPixel.png

Project Lazarus is a GoD era server with future plans to progress into Omens of War. With an overall goal of catering to a wide variety of play styles, the server offers a healthy serving of re-balanced and custom content, while retaining familiar roots to the base game. Many of the server features, offering something for virtually everyone, can be found below:

  • ROF2 Client which includes all available Quality of Life features.
  • Boxing up to 6 (+1 for Bazaar Traders). Boxing not required to enjoy the server, but 6 is allowed for active game play for those who enjoy it.
  • Out of Era Alternate Advancement that will allow almost infinite character advancement. Feel your characters power increase as you invest your hard earned AA.
  • Custom currency drops that can be used to purchase Raid gear from custom merchants, or to convert into AA.
  • Tradeable loot (Attunable above 125 hp/mana, Epics are no trade.)
  • No level requirements on loot with the exception of certain procs and click effects.
  • Many Custom Race/Class combos, including custom Beastlord pets.
  • Bonus custom content aimed at both new and advancing players.
  • Epic 1.0s buffed from classic versions for increased relevance.
  • Raid tuning balanced for 2 groups. (PoP Elemental-Time: 3 groups).
  • No Flagging or Keying required to access zones. (exception being GoD raids).
  • Low Tuning on GoD Raids for additional high end challenge.
  • Instancing for high demand group/raid content, with free solo instances that offer experience bonus for solo players.
  • Buff, Rez, and Port NPCs among other Quality of Life additions.
  • Lots of tweaks and adjustments to classes for increased viability.
  • Full Suite of server specific web tools. (allakhazam clone, magelo, leaderboard to track where you stand against your peers.)
  • And more...
Players who prefer to true solo (or run less than a full group) will benefit from features such as custom currency that gives alternate access to mid-high tier raid gear and the open tradability of the vast majority of items, along with increased XP in instances for soloers. Buff and Rez NPCs also keep those players from doing without the necessities that allow you to get into the action like anyone else. If you’re the type that’s mad enough to solo a rogue to max level, why not enjoy a fresh rez and some warm buffs while you prepare to take on all of Norrath once again!
Those running a full group, casual or high end focused, will find wider group building possibilities with re-balanced classes (Additional main healer viability to Druid/Shaman and empowered battle Clerics for example) that allow for more interesting group combinations with potential to tackle all aspects of the game. No Holy Trinities required, unless you’re into that sort of thing.
The raid scene offers difficulty balanced with 2-3 group raid forces in mind, up to Plane of Time and LDoN, along with a selection of custom Fabled raid targets that offer unique gear and challenges of their own. Flagging and keying is also opened up to allow more players to freely progress from group to raid content by simply bringing along a friend or two, or making new ones to progress alongside of! Additionally, Gates of Discord offers a formidable trove of raid content for those on the cutting edge who wish to test themselves.
Custom quests for server specific starting gear are available to put new players on the path of progression as they level into custom mid and higher tier quests, along with an incredibly deep selection of AAs that keep characters feeling like they have room to grow for a very long time.
The server community is active and involved, with many features aimed towards the spirit of comradery and a low drama experience among the population (MGB XP Potion in PoK! No Batphones required.), along with active GM presence and veteran players who are quick to offer advice or an assist to their fellow players, whether in OOC chat or the server Discord.
Lazarus has continued to grow and flourish past its one year anniversary with every new update, and every new face. So why not hop on by (yes, Frogloks are playable), settle in, and check it out for yourself? Join us on Discord for more information

And this is their wiki link: http://lazaruseq.com/Wiki/index.php/Main_Page
 
Downloaded the UF Client but cant seem to get MQ2 injected. Have been messing with it for a couple hours. My inexperience is showing. Any suggestions or am I missing something obvious?
 
Downloaded the UF Client but cant seem to get MQ2 injected. Have been messing with it for a couple hours. My inexperience is showing. Any suggestions or am I missing something obvious?

As far as I remember Wayfarer's Haven runs on Underfoot client, maybe even something else since they transitioned from P2002. I used the MQ2 compile from another website, which has far fewer plugins, doesn't have KA, and is pretty bare bones.
Redguides compile is an absolute gem when it's available for a server, and sorely missed when it isn't.
 
your method of sensing if you are in an indoor zone seems awkward, have you considered ${Zone.Indoor}?
I know this is an old post, but I am just seeing it now.
I didn't know of any way to determine whether I was inside or not at the time. I was just working with the knowledge I possessed while playing with this script. That's pretty awesome knowledge to have though, for the future. I appreciate it.
 
As far as I remember Wayfarer's Haven runs on Underfoot client, maybe even something else since they transitioned from P2002. I used the MQ2 compile from another website, which has far fewer plugins, doesn't have KA, and is pretty bare bones.
Redguides compile is an absolute gem when it's available for a server, and sorely missed when it isn't.
Agreed. Perfect for some.
Will try it from there you remember the MQ build?
 
Project 2002 - Wayfarer's Haven Cleric Macro

Users who are viewing this thread

Back
Top
Cart