• 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

Mage Assist Macro

HardOne

Member
Joined
Jan 15, 2006
RedCents
61¢
Here is a pretty simple macro I wrote for the Emu server I play on. The mage willow follow you around, DS, Assist, and a few other options. If you use MQ2IRC you can issue commands to port using npcs.


Rich (BB code):
|------------------------------------------------------------|
|		    Includes
|------------------------------------------------------------|
#Include spell_routines.inc
|------------------------------------------------------------|
|		    Events
|------------------------------------------------------------|
#Chat Chat
#Chat tell
#Event DEATH "You have entered#*#"
#Event DEATH "You have been slain#*#"  
#Event CHAT "#*# tells you, '#*#"
#Event GROUP "<#1#> #2#"
#Event COH "<#*#> coh #1#"
#Event COH "#*# tells you, 'coh #1#"
#Event HELP "[MQ2] help"
#Event SIT "[MQ2] sit #1#"
#Event ASSISTAT "[MQ2] assistat #1#"
#Event ASSIST "[MQ2] assist #1#"
#Event MASTER "[MQ2] master #1#"
#Event FOLLOW "[MQ2] follow #1#"
#Event SFG "<#1#> sfg"
#Event HATE "<#1#> hate"
#Event CRYSTAL "<#1#> crystal"
#Event ACRYLIA "<#1#> acry"
#Event FIRE "<#1#> fire"
#Event FAYDARK "<#1#> faydark"
#Event BUTCHER "<#1#> butcher"
#Event UNREST "<#1#> unrest"
#Event KITHICOR "<#1#> kithicor"
#Event KEEP "<#1#> keep"
#Event LAIR "<#1#> lair"
#Event OVERTHERE "<#1#> overthere"
#Event LAKE "<#1#> lake"
#Event MAZE "<#1#> maze"
#Event MARR "<#1#> marr"
#Event SOLUSEK "<#1#> solusek"
Sub Main 
|------------READ THIS SECTION AND EDIT IF NEEDED-----------|
   /Declare UseEpic				 outer  TRUE
   /Declare Follow    			 outer	TRUE
   /Declare Assist				 outer	TRUE
   /Declare Sit					 outer	FALSE
   /Declare BigDS				 outer	FALSE
   /Declare DSTarg				 outer	TRUE
   /Declare PetDS				 outer	FALSE
   /Declare PetProc				 outer  FALSE
   /Declare	Proc				 outer	FALSE
   |-----------IRC---------------------------------------------|
   /Declare UseIRC				 outer	TRUE
   /Declare IRCServerAddr		 outer	"127.0.0.1"
   /Declare IRCPort				 outer	"6667"
   /Declare IRCChannel			 outer	"#Bot"
   |-----------SPELLS------------------------------------------|
   /Declare SlowNuke  			 outer	"Fickle Inferno"
   /Declare FastNuke 			 outer	"Scalding Sands"
   /Declare PBAE     			 outer	"Wind of the Desert"
   /Declare BIGDS    			 outer	"Scorching Skin"
   /Declare PetHeal  			 outer	"Renewal of Aenda"
   /Declare PetSummon 			 outer	"Essence of Air"
   /Declare PetBuff   			 outer	"Burnout VI"
   /Declare ProcBuff  			 outer	"Burning Aura"
   /Declare DS        			 outer	"Circle of Magmaskin"
   /Declare Epic				 outer	"Staff of Elemental Essence"
   /Declare EpicPetBuff			 outer	"Elemental Conjunction"
   /Declare COH					 outer	"Call of the Hero"
   /Declare GateItem			 outer	"Newbie Charm"   
   |-----------PERCENTS TO DO THINGS---------------------------|
   /Declare AssistAt  	   		 outer  99
   /Declare HealAt   			 outer	30
   /Declare ManaAt    			 outer	5
   /Declare PetHealAt			 outer  60
   |-----------STOP EDITING -----------------------------------|
   |-----------TIMERS------------------------------------------|
   /Declare EpicTimer	  timer	 outer  0
   /Declare CoHealing 	  timer	 outer  0
   /Declare CoMana   	  timer  outer  0
   /Declare Master    			 outer  0
   /Declare DSTimer		  timer	 outer	0
   /Declare MasterID			 outer	0
|------------------------------------------------------------|
|		    Main Loop (Start of Macro)
|------------------------------------------------------------|
   /echo
   /echo Mage Bot 2.0 started!
   /echo Type /echo Help for more details!
   /echo  

   /if (!${Target.ID}) { 
	/echo Target the Tank when you run this macro to designate him as MT 
		/end 
	} else { 
		/if (${Target.Type.Equal[PC]}) { 
			/varset Master ${Target}
			/varset MasterID ${Target.ID} 
			} else {
				/if (${Target.Type.Equal[NPC]}) {
				/echo Target the Tank when you run this macro not an NPC to designate him as MT. 
					/end
	} 
}
	/call MemSpells
    /pet hold
	/if (${UseIRC}) {
		/delay 5
			/iconnect ${IRCServerAddr} ${IRCPort} ${IRCChannel} ${Me}	
				}

   :MyMainLoop 
   /if (${Me.Casting.ID}) /goto :MyMainloop 
   /doevents 
   	/call Checks
	/if (${Follow} && !${Sit}) {
		/target ${Master} pc
		/stick hold
		}
	/if (${Sit} && !${Follow}) /sit	
	/if (${Assist}) {		
		/target ${Master}
			/assist
				/delay 5
					/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<${AssistAt}) {
						/pet Attack
						/pet Focus
							/delay 5
								/pet Attack
									/call Assist
										}
					}
   /goto :MyMainLoop 
/return

Sub Checks
	/if (${DSTarg}) /call DS
	/if (${BigDS}) /call BIGDS
	/if (${Proc}) /call Proc
	/call PetBuffs
	/call PetHealth
	/call CheckMyHealth
	/call CheckMyMana
/return

Sub Assist
	 /popup Assisting on (${Target})!
	:Attack_Loop
			/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<${AssistAt}) {
				/if (${UseIRC}) /i say Assisting on -- (${Target}) --!
				/pet Attack
				/call cast ${FastNuke} gem2
				/delay 40
					/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Attack_Loop
					/if (${Macro.Return.Equal["CAST_NOTARGET"]}) /return	
					/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :Attack_Loop
					/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :Attack_Loop
					/call Checks
				:Attack2_Loop					
				/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<${AssistAt}) {
				/pet Attack
				/call cast ${SlowNuke} gem1
				/delay 40
					/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Attack2_Loop
					/if (${Macro.Return.Equal["CAST_NOTARGET"]}) /return
					/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :Attack2_Loop
					/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :Attack2_Loop
					}
					/call Checks					
			/goto :Attack_Loop
		} Else {
		}
/return

Sub BIGDS
	/if (${Me.SpellReady[${BIGDS}]}) {
	:BiIGDS_Loop
		/if (${UseIRC}) /i say -- ${BIGDS} -- on ${Master}
		/pet hold
		/delay 3
		/target ${Master}
		/delay 5
		/call cast ${BIGDS} gem8
		/delay 20
}
/return

Sub DS
	/if (${Me.SpellReady[${DS}]} && ${DSTimer}==0) {
	/if (${UseIRC}) /i say -- ${DS} -- on ${Master}
	:DS_Loop
		/target ${Master}
		/delay 5
		/call cast ${DS} gem9
		/delay 20
				/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DS_Loop
				/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :DS_Loop
				/if (${Macro.Return.Equal["CAST_SUCCESS"]}) /varset DSTimer 900s
				}
/return
	
Sub CheckMyHealth
/if (${Me.PctHPs}<30 && ${CoHealing}==0) {
:HealMe_Loop
	/target myself
	/delay 5
	/call cast "Charm of Healing" item 
	/delay 20	
					/if (${Macro.Return.Equal["CAST_NOTREADY"]}) {
					/varset CoHeal ${FindItem["Charm of Healing"].Timer}
					/return
						}
				/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :HealMe_Loop
				/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :HealMe_Loop
				/if (${Macro.Return.Equal["CAST_SUCCESS"]}) /varset EpicTimer ${FindItem["Charm of Healing"].Timer}
}
/return  

Sub CheckMyMana
/if (${Me.PctMana}<5 && ${CoMana}==0) {
:COMana_Loop
	/target myself
	/delay 5
	/call cast "Charm of Mana" item 
	/delay 20
					/if (${Macro.Return.Equal["CAST_NOTREADY"]}) {
					/varset CoMana ${FindItem["Charm of Mana"].Timer}
					/return
						}
				/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :COMana_Loop
				/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :COMana_Loop
				/if (${Macro.Return.Equal["CAST_SUCCESS"]}) /varset CoMana ${FindItem["Charm of Mana"].Timer}
}
/return

Sub MakePet
:MakePet_Loop
/if (!${Me.Pet.ID}) {
	/if (${UseIRC}) /i say Summoning your pet with spell: ${PetSummon}!
	/echo Summoning your pet with spell: ${PetSummon}
	/call Cast ${PetSummon}
		/delay 20
				/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :MakePet_Loop
				/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :MakePet_Loop
} 
/return

Sub PetHealth
/if (${Me.Pet.ID}) { 
:PetHeal_Loop
/if (${Me.Pet.PctHPs}<${PetHealAt}) {
	/if (${UseIRC}) /i say Healing your pet with spell: ${PetHeal}!
	/echo Healing your pet with spell: ${PetHeal}
		/call Cast ${PetHeal} gem5
			/delay 20
				/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :PetHeal_Loop
				/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :PetHeal_Loop	
	}
} 
/return

Sub PetBuffs
/if (${Me.Pet.ID}) { 
/if (!${Me.PetBuff[${PetBuff}]}) { 
/target ${Me.Pet}
/echo Pet needed ${PetBuff}! 
/call Cast ${PetBuff} gem7
} 
/if (!${Me.PetBuff[${DS}]} && ${PetDS}) { 
/target ${Me.Pet}
/echo Pet needed ${DS}!  
/call Cast ${DS} gem9
}
:Epic_Loop
/if (!${Me.PetBuff[${EpicPetBuff}]} && ${UseEpic} && ${EpicTimer}==0) { 
/target ${Me.Pet}
	/if (${UseIRC}) /i say Pet needed ${EpicPetBuff}!!
/echo Pet needed ${EpicPetBuff}!  
/call Cast ${Epic} item
/delay 20
					/if (${Macro.Return.Equal["CAST_NOTREADY"]}) {
					/varset EpicTimer ${FindItem[${Epic}].Timer}
					/return
						}
				/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Epic_Loop
				/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :Epic_Loop
				/if (${Macro.Return.Equal["CAST_SUCCESS"]}) /varset EpicTimer ${FindItem[${Epic}].Timer}
						}
} else { 
/echo You dont have a pet! Making one!
	/call MakePet
} 
/return 

|------------------------------------------------------------|
|		    Memorize your spells
|------------------------------------------------------------|
Sub MemSpells  
   /if ( !${Me.Gem[${SlowNuke}]} ) { 
      /memspell 1 ${SlowNuke} 
      /delay 150 
      } 
   /if ( !${Me.Gem[${FastNuke}]} ) { 
      /memspell 2 ${FastNuke} 
      /delay 150  
      } 
   /if ( !${Me.Gem[${PBAE}]} ) { 
      /memspell 3 ${PBAE} 
      /delay 150  
      } 
   /if ( !${Me.Gem[${COH}]} ) { 
      /memspell 4 ${COH} 
      /delay 150  
      } 
   /if ( !${Me.Gem[${PetHeal}]} ) { 
      /memspell 5 ${PetHeal} 
      /delay 150  
      } 
   /if ( !${Me.Gem[${PetSummon}]} ) { 
      /memspell 6 ${PetSummon} 
      /delay 150  
      } 
   /if ( !${Me.Gem[${PetBuff}]} ) { 
      /memspell 7 ${PetBuff} 
      /delay 150  
      } 
   /if ( !${Me.Gem[${BIGDS}]} ) { 
      /memspell 8 ${BIGDS} 
      /delay 150  
      } 
   /if ( !${Me.Gem[${DS}]} ) { 
      /memspell 9 ${DS} 
      /delay 150  
      }  
/return

|------------------------------------------------------------|
|		    Find Person who just sent you a tell
|------------------------------------------------------------| 
Sub FindExactPC(string name)
   /declare nameid int local
   /declare counter int local 1
   :FindNext
   /if (!${NearestSpawn[${counter}, pc ${name}].ID}) /return NOT_FOUND
   /varset nameid ${NearestSpawn[${counter}, pc ${name}].ID}
   /if (${Spawn[${nameid}].CleanName.Equal[${name}]}) {
      /target id ${nameid}
      /delay 1s ${Target.ID}==${nameid}
      /if (${Target.ID}==${nameid}) /return TARGET_SUCCESS
   }
   /varcalc counter ${counter}+1
   /if (${NearestSpawn[${counter}, pc ${name}].ID}) /goto :FindNext
/return NOT_FOUND

Sub Event_Chat(string ChatType,string Sender,string ChatText)
   /if ((!${ChatType.Equal[${mychannel}]})&&(!${ChatType.Equal[TELL]})) /return
   /if (!${Spawn[${Sender}].ID}) {
      /e ${Sender} is not in the zone
      /return
   }
|------------------------------------------------------------|
|------------------------------------------------------------|
|		    Help Menu!				     													
|------------------------------------------------------------|
   /if ((${ChatText.Equal[Help]})) {
      /call FindExactPC ${Sender}
      /if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
      /if (${Target.Distance}<=${patchhealrange}) {
				/t ${Sender} ---------Janki Help Menu---------
					/delay 25
				/t ${Sender} HEAL, HOT, HP, And For more info on each command tell me (Example) E-HEAL!
      } else /tell ${Sender} your OOR
   }
|------------------------------------------------------------|
|------------------------------------------------------------|
|		    END of Event Procedures!                 						 |
|------------------------------------------------------------|
/return


|------------------------------------------------------------|
|		    Events
|------------------------------------------------------------|

|------------------------------------------------------------|
|This is called when you type /echo help.  Did I forget anything, probably?
Sub Event_HELP
/echo ----- Macro Information ------
/echo "/echo Master <Tank Name>" Sets who the bot will heal/assist.
/echo "/echo HealAt <Percent>" Sets the macro to Heal at selected Percentage.
/echo "/echo AssistAt <Percent>" Sets the macro to Assist at selected Percentage.
/echo "/echo Follow <TRUE / FALSE>" Sets if the bot will follow the Tank.
/echo "/echo Assist <TRUE or FALSE>" turns on/off auto-assisting.
/echo "/echo Sit <TRUE / FALSE>" turns on/off sitting when Follow is FALSE.
/echo "/echo Coh <Character Name>" Will target name and Call of the hero.
/echo ------------------------------
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_MASTER(Zero, Name)
	/echo ============================================
	/echo Changing Master to ${Name}
	/echo ============================================
	/target ${Name} pc
		/delay 5 ${Target}==${Name}
			/target ${Name} pc
   /if (!${Target.ID}) { 
	/echo Failed to target the new Master! 
		/return
	} else { 
		/if (${Target.Type.Equal[PC]}) { 
			/varset Master ${Target}
			/varset MasterID ${Target.ID} 
				/echo I am now ${Master} 's Bitch.
			} else {
				/if (${Target.Type.Equal[NPC]}) {
				/echo Failed to target the New Master or New Master was an NPC/Corpse. 
					/return
							} 
					}
}
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_ASSISTAT(Zero, PercentAssA)
	/echo ============================================
	/echo Changing AssistAt to ${PercentAssA}
	/echo ============================================
	/varset AssistAt ${PercentAssA}
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_SIT(Zero, TFS)
	/echo ============================================
	/echo Changing Sit to ${TFS}
	/echo ============================================
	/varset Sit ${TFS}
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_ASSIST(Zero, TFA)
	/echo ============================================
	/echo Changing Assist to ${TFA}
	/echo ============================================
	/varset Assist ${TFA}
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_HEALAT(Zero, PercentHA)
	/echo ============================================
	/echo Changing HealAt to ${PercentHA}
	/echo ============================================
	/varset HealAt ${PercentHA}
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_FOLLOW(Zero, TFF)
	/echo ============================================
	/echo Changing Follow to ${TFF}
	/echo ============================================
	/varset Follow ${TFF}
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_COH(Zero, COHT)
	/echo ============================================
	/echo Call of the Hero on: ${COHT}
	/echo ============================================
		/target ${COHT} pc
			/delay 5
				/target ${COHT} pc
   /if (!${Target.ID}) { 
	/echo Failed to target the person to COH! 
		/return
	} else { 
		/if (${Target.Type.Equal[PC]}) { 
			:COH_Loop
				/call cast ${COH} gem4
					/delay 20
						/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :COH_Loop
						/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :COH_Loop
										}
			}					
/return
|------------------------------------------------------------|
|The upcoming subroutines are called via an echo to turn on/off the options for the macro
Sub Event_DEATH(Zero, Death)
	/echo ============================================
	/echo Ohh shit! We died or zoned!
	/echo ============================================
	/end
/return
|------------------------------------------------------------|

Sub Event_SFG(Zero, SFGP)
|------------------------------------------------------------|
|		    SFG!				     													
|------------------------------------------------------------|
			:gosfg_Loop
			/call cast ${GateItem} item
			/delay 5 !${Me.Casting.ID}
						/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :gosfg_Loop
						/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :gosfg_Loop
   /return
|------------------------------------------------------------
Sub Event_FAYDARK(Zero, FAYP)
|------------------------------------------------------------|
|		    Faydark!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say faydark
	/return
|------------------------------------------------------------
Sub Event_CRYSTAL(Zero, CRYP)
|------------------------------------------------------------|
|		    Crystal!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say crystal
	/return
|------------------------------------------------------------
Sub Event_ACRYLIA(Zero, ACRP)
|------------------------------------------------------------|
|		    Acrylia!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say acrylia
   /return
|------------------------------------------------------------
Sub Event_BUTCHER(Zero, BUTP)
|------------------------------------------------------------|
|		    Butcher!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say butcher
   /return
|------------------------------------------------------------
Sub Event_FIRE(Zero, FIRP)
|------------------------------------------------------------|
|		    Keep!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say fire
   /return
|------------------------------------------------------------
Sub Event_KEEP(Zero, KEEP)
|------------------------------------------------------------|
|		    Keep!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say keep
   /return
|------------------------------------------------------------
Sub Event_LAIR(Zero, LIAP)
|------------------------------------------------------------|
|		    Lair!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say lair
   /return
|------------------------------------------------------------
Sub Event_OVERTHERE(Zero, OVEP)
|------------------------------------------------------------|
|		    Overthere!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say overthere
   /return
|------------------------------------------------------------
Sub Event_HATE(Zero, HATP)
|------------------------------------------------------------|
|		    Hate!				     													
|------------------------------------------------------------|
			/target Sorin npc
			/stick 5
			/delay 15
				/say hate
   /return
|------------------------------------------------------------
Sub Event_UNREST(Zero, UNRP)
|------------------------------------------------------------|
|		    Unrest!				     													
|------------------------------------------------------------|
			/target "Aeridin of the Conclave" npc
			/stick 5
			/delay 15
				/say unrest
   /return
|------------------------------------------------------------
Sub Event_KITHICOR(Zero, KITP)
|------------------------------------------------------------|
|		    Kitchicor!				     													
|------------------------------------------------------------|
			/target "Aeridin of the Conclave" npc
			/stick 5
			/delay 15
				/say kitchicor
   /return
|------------------------------------------------------------
Sub Event_LAKE(Zero, LAKP)
|------------------------------------------------------------|
|		    Lake!				     													
|------------------------------------------------------------|
			/target "Aeridin of the Conclave" npc
			/stick 5
			/delay 15
				/say lake
   /return
|------------------------------------------------------------
Sub Event_MAZE(Zero, MAZP)
|------------------------------------------------------------|
|		    Maze!				     													
|------------------------------------------------------------|
			/target "Aeridin of the Conclave" npc
			/stick 5
			/delay 15
				/say maze
   /return
|------------------------------------------------------------
Sub Event_MARR(Zero, MARP)
|------------------------------------------------------------|
|		    Marr!				     													
|------------------------------------------------------------|
			/target "Aeridin of the Conclave" npc
			/stick 5
			/delay 15
				/say marr
   /return
|------------------------------------------------------------
Sub Event_SOLUSEK(Zero, SOLP)
|------------------------------------------------------------|
|		    solusek!				     													
|------------------------------------------------------------|
			/target "Aeridin of the Conclave" npc
			/stick 5
			/delay 15
				/say solusek
	/return
|------------------------------------------------------------
 
Last edited:
Mage Assist Macro

Users who are viewing this thread

Back
Top
Cart