Help wanted :) yet again

kyle123

New member
Joined
Feb 1, 2009
Messages
62
Reaction score
0
Points
0
Hey guys,
Got some great help earlier and looking for some hehe :)
I got the auto assist macro working today, its pretty good but i want to make some macros of my own to better fit my playing style.

I am looking for someone to help explain how i go about creating my own macro or even maybe revising a macro to better fit me.

I am really looking to create just a basic macro for my shaman (85) to assist my shadowknight and cast his AA slow, and then his two dots, then for him to sit. And also for him to cast his buffs when they wear off (champion and unity and haste) and also to sit after he does that. Thats about it for the shaman.
Also have a monk that i am wanting to create a macro for or revise another macro for him to assist my sk at 95% and then attack and use Flying kick and Calemities something haha i forget what it is and dont have him logged in atm. And after mob is dead i want him to walk back to the spot i started macro at.
And then my ranger i was wanting to get the same thing, for him to assit at 95% and use his 3 main spells i have set up for him. and then also to walk back after mob is dead.
And last my wizard, my wizard is only 80 but i am sure once i learn how to do this ill be able to change the spells she will cast when she gets 85.

So pretty much i am just looking for someone to help me understand how to create my own macro from ground up or revise a macro. Sorry but i have never really fully understood the whole macro things, good with computers so probably shouldnt be hard for me to learn.
Willing to talk through vent or whatever it takes just lemme know :) really want to get my guys running tired of alt tab haha and the basic assist macro cause it messes up a lot

Thanks guys!!! Appreciate the help
 
The only way to learn macros is to sit down and start trying to understand what things do.

It's pretty much a list of commands starting from the top and working it's way down. Heres a few basic commands to get you started. You understand all of this and your on the way to writing your own macros.

Sub Main - Is pretty much a header to say start the macro here, macros always start at Main
/attack on - Does an EQ command to put attack on
/echo Hello - Puts Hello in your macroquest chat box
/echo ${Me.HPs) - This isn't as straight forward, this will show you your HP's in your macroquest chat box.
/call Run - Moves to a new section of the macro

Sub Run - This is where it moved to
/if ${Me.Hps}>100 /call Run - If your health is under 100hps it will go back to Sub Run
/call Main - Takes you back to start of macro

That's some basics. Just start looking at macros, copy bits into notepad and run the macro to see what happens. After 3 to 4 days of doing this you should have a firm knowledge of how macros work. You just have to invest the time to learn.

The biggest hurdle really is understanding TLO's and how they work. ${Me.Hps} is a TLO. If you don't understand what something does, post the code in this thread and someone will tell you.
 
Alright cool, thanks, So pretty much i just start in notepad and once i think i have something i move it into my macro folder?
 
Some good resources to help as well....


MacroQuest2:Macros Wiki Page

Macro Reference Wiki Page
Editing Existing Macros Wiki Page

The first one gives you tons of examples and an introduction to what macros are. The second link starts to get more detailed about how they function and are built to handle what you want. The third goes through how you would edit an already made macro to suit your needs or to add functionality.

Best bits of advice I can give you is to use the IRC channel, come to the table prepared with questions that show your spending the time to learn and not being a lazy ass who can't use search, and take your time. Gut current macros, find something that you want to know how its done and 9 out of 10 times someone has done something similar or could be easily modified.

Good Luck.
 
Thanks again guys :) will def look into this things but for now bed time school in the morning :) off work tomorrow so i guess its macro day haha. Thanks guy and good night
 
Also, to make it easier to edit, check out Notepad++ (It's free, and what I use).

The other thing that will help you, and everyone else, is IDENT your code.
Code:
sub main
     /if I have something here {
          /if I should be indented here {
               and again if it's another sub
          }
     }

sub new
     /if you noticed the new sub (same level as main) isn't indented... {
          /doability write macro
          /delay 2 days
          /doability post sample code
          /delay 1 hour
          /doability get response
     }

/end
The above is much easier to read, both for you in time, and anyone trying to help you. :)
Code:
sub main
/if I have something here {
/if I should be indented here {
and again if it's another sub
}
}
sub new
/if you noticed the new sub (same level as main) isn't indented... {
/doability write macro
/delay 2 days
/doability post sample code
/delay 1 hour
/doability get response
}
/end
 
I haven't really played with it, but my understanding from friends who do is this is exactly the sort of thing modbot is designed for. It's available over in the VIP forums on the Macroquest boards, yet another reason to make the $10 donation over there.
 
And as JJ will tell you, "/echo is your friend"

As the macro starts getting more complex and you have breaks on more than one line number just start throwing in /echos where you think things are going bad.
 
Now if they could only make an IDE that would let you step through a macro...
 
put an echo at the entrance and the exit of your subs also at your :Goto, between those and any error line that is outputed into your mq2chat you have everything needed to fix a broken macro
 
Ok so i edited a shaman macro, with just using macro, i found a forum that had a code pasted on there and i just took the code and pasted it into my regular notepad, and i changed the spells around to what i wanted to use. Now do i just save the notepad document and then move that saved file into my macros folder? or is there something special i have to do. Because it wont let me run it. says it cant find file
 
Make sure you have "All files" under file type when you save... and use a .mac extension. IE: shambuffs.mac

Move shambuffs.mac to your macros folder in your MQ2 directory... then in game: /mac shambuffs MainTankName
 
Ok said it reached end of mac, and then ended mac wanna tell me what i have wrong?
Its from your original post memset on shammacro

Code:
#Event SetTank "#1# tells you, 'settank #2# #3#'"

|################################################
Sub Main
	| Define your MainTank... this is changeable while the macro is running by having new main tank /tell you: secretphrase (see below)
	/declare MainTank string outer krimrol
	/declare SecretPhrase string outer maintank

	| Define your Spells...
	/declare Spell_LYNX string outer	"Talisman of the Lynx"
	/declare Spell_CHAMPION string outer	"Champion"
	/declare Spell_HASTE string outer	"Talisman of Celerity"
	/declare Spell_UNITY string outer	"Talisman of Unity Rk. II"
	/declare Spell_CANNI string outer	"Ancestral Obligation"
	/declare Spell_HOT string outer		"Halcyon Whisper"
	/declare Spell_PATCH string outer	"Dannal's Mending"
	/declare AA_SLOW string outer	        "Turgur's Swarm"
	
	

	| Define what % mana you feel you should canni.
	/declare MinMana int outer 90

	| Define if you want to HoT (heal over time) or not. Also define what % health you want to HoT the MT.
	/declare DoHOT bool outer FALSE
	/declare DoHOTPercent int outer 85

	| Define if you want to PATCH heal or not. Also define what % health you want to heal the MT.
	/declare DoPATCH bool outer TRUE
	/declare DoPATCHPercent int outer 70

	| Define if you want to auto-slow mobs or not. Also define what % health you want to slow the mob.
	/declare DoAASLOW bool outer TRUE
	/declare DoAASLOWPercent int outer 97


	|
	| Don't need to edit below this line!
	|

	| Lets see if a MT was passed as an argument to the macro.
	/if (${Defined[Param0]}) {
		| We have a MT passed, lets use that instead of our default!
		/varset MainTank ${Param0}
	}

	/echo Loaded Short Duration Buffs v1.0 by memset
	/echo MAIN TANK: ${MainTank}
	/echo CANNI AT %: ${MinMana}% Mana
	
	/if (${DoHOT}) {
		/echo HOT AT %: ${DoHOTPercent}%
	}

	/if (${DoPATCH}) {
		/echo PATCH AT %: ${DoPATCHPercent}%
	}

	| Check if MQ2Cast plugin is loaded, if it isn't... load it automatically. Thanks VillageIdiot & Unity!
	/if (!${Plugin[MQ2Cast].Name.Equal[mq2cast]}) /squelch /plugin MQ2Cast nocheck


	|################################################
	| START OF LOOP
	:start
	/doevents

	/call GMCheck

	|################################################
	| Target our MT.
	/target pc ${MainTank}
	/delay 1s

	|################################################
	| Make sure we have a target before continuing.
	/if (!${Target.ID}) {
		/goto :start
	}

	|################################################
	| Next, make sure we aren't invisible... if we ARE, don't cast anything.
	/if (${Me.Invis}) {
		/goto :start
	}

	|################################################
	| Also, if we are MOVING... we don't need to cast anything. Will be pointless.
	/if (${Me.Moving}) {
		/goto :start
	}

	|################################################
	| Finally, see if we're casting or not. This was added LATER... so it's slightly redundant below. Clean up later.
|	/if (${Me.Casting.ID}) /goto :start

	|################################################
	| Lets first make sure we don't need to heal the MT.
	| Do we need to PATCH heal the MT?
	/if (${Target.PctHPs} <= ${DoPATCHPercent} && ${DoPATCH}) {
		| It seems so. Better heal! Is the spell ready? Make sure we're not casting already...
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_PATCH}]} && ${Target.Distance} < 100) {
			/echo Healing ${MainTank} with ${Spell_PATCH}!
			/casting ${Spell_PATCH}
			/delay 2.5
		}
	}

	| Do we need to HoT the MT?
	/if (${Target.PctHPs} <= ${DoHOTPercent} && ${DoHOT}) {
		| It seems so. Better heal! Is the spell ready? Make sure we're not casting already...
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_HOT}]} && ${Target.Distance} < 100 && !${Target.Buff[${Spell_HOT}].Duration}) {
			/echo Healing ${MainTank} with ${Spell_HOT}!
			/casting ${Spell_HOT}
			/delay 2.5
		}
	}

	| There's a possibility that the shaman running this macro could be in need of a heal from canni... check now!
	/if (${Me.PctHPs} <= 80) {
		/target ${Me.CleanName}
		/delay 1s
		/casting ${Spell_PATCH}
		/delay 2.5
		/target pc ${MainTank}
		/delay 1s
	}

	|################################################
	| Lets see if the mob is malo'd... if not, and we're supposed to, then malo it.
	/if (${DoAAMalo} && ${Me.AltAbilityReady[${AA_Malo}]}) {
		| Yes... see if mob is malo'd already.
		/assist ${MainTank}
		/delay 1s
		/if (${Target.Buff[${AA_Malo}].Duration.Ticks} < 1 && ${Target.Type.Equal[NPC]} && ${Target.Distance} < 100 && ${Target.PctHPs} <= ${DoAASLOWPercent}) {
			| Ok... malo the mob!
			/echo Malo'ing ${Target.CleanName} with ${AA_Malo}
			/aa act Malosinete
			/delay 4s
		}
	}

	|################################################
	| Now lets check if we need to slow a mob!
	/if (${DoAASLOW}) {
		| Ok, we need to slow....maybe. Assist MT, check if it has been slowed already with our spell. Also verify it's an NPC.
		/assist ${MainTank}
		/delay 1s
		/if (${Target.Type.Equal[NPC]}) {
			| Verified this IS an NPC.
			| Check HP's... and if we've slowed already or not.
			/if (${Target.PctHPs} <= ${DoAASLOWPercent} && !${Target.BuffDuration[${AA_SLOW}]} && !${Me.Casting.ID} && ${Target.Distance} < 100 && ${Me.SpellReady[${AA_SLOW}]}) {
				| HP's match and the mob isn't slow and I'm not casting... AND it's within range. lets slow this mob.
				/echo Slowing ${Target.CleanName} with ${AA_SLOW}!
				/casting ${AA_SLOW}
				/delay 1.5s
				/target pc ${MainTank}
				/delay 1s
			}
		}
		/target pc ${MainTank}
		/delay 1s
	}

	|################################################
	| Check if we need to rebuff LANGUOR:
	/if (${Target.BuffDuration[${Spell_LANGUOR}]} < 15 && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_LANGUOR}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_LANGUOR} on ${Target.CleanName}!
			/casting ${Spell_LANGUOR}
			/delay 2s
		}
	}

	|################################################
	| Check if we need to rebuff CHAMPION:
	/if (${Target.BuffDuration[${Spell_CHAMPION}]} < 15 && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_CHAMPION}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_CHAMPION} on ${Target.CleanName}!
			/casting ${Spell_CHAMPION}
			/delay 2s
		}
	}

	|################################################
	| Check if we need to rebuff LYNX:
	/if (!${Target.BuffDuration[${Spell_LYNX}]} && ${Target.Distance} < 50) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_LYNX}]}) {
			| Before we cast, lets make it so it only casts if MT has a mob targeted and the mob is closeby..
			/assist ${MainTank}
			/delay 1s

			/if (${Target.Distance} < 100 && ${Target.CleanName.NotEqual[${MainTank}]}) {
				| Good to go! Cast!
				/target pc ${MainTank}
				/delay 1s
				/echo Casting ${Spell_LYNX} on ${Target.CleanName}!
				/casting ${Spell_LYNX}
				/delay 4s
			}
		}
	}

	|################################################
	| Check if we need to CLICK EPIC:
	/if (${FindItem[${ITEM_Epic}].Timer} == 0) {
		| Epic clicky is ready... do we need to click it?
		/assist ${MainTank}
		/delay 8
		/if (${Target.Distance} < 100 && ${Target.Type.Equal[NPC]}) {
			| Yep. Lets click it!
			/casting ${ITEM_Epic}
			/delay 1s
		}
	}

	|################################################
	| Check if we need to rebuff HASTE:
	/if (!${Target.BuffDuration[${Spell_HASTE}]} && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_HASTE}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_HASTE} on ${Target.CleanName}!
			/casting ${Spell_HASTE}
			/delay 4s
		}
	}

	|################################################
	| Check if we need to rebuff UNITY:
	/if (${Target.BuffDuration[${Spell_UNITY}]} <= 15 && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_UNITY}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_UNITY} on ${Target.CleanName}!
			/casting ${Spell_UNITY}
			/delay 2s
		}
	}

	|################################################
	| Check if we need to cannibilize:
	/if (${Me.PctMana} <= ${MinMana} && ${Me.SpellReady[${Spell_CANNI}]}) {
		| Less than or equal to minimum percent of mana... lets canni.
		/echo Casting ${Spell_CANNI}!
		/casting ${Spell_CANNI}
		/delay 1s
	}


	/delay 1s
	/goto :start
/return


|################################################
Sub Event_SetTank(line, sender, new_tank, secretphrase)
	/if (${secretphrase.Equal[${SecretPhrase}]}) {
		/echo ${sender} sent secret phrase, setting ${new_tank} as tank!
		/varset MainTank ${new_tank}
		/target pc ${MainTank}
		/delay 1s
	}
/return

|################################################
Sub GMCheck 
   /if (${Spawn[gm].ID}) { 
      /beep 
      /beep 
      /beep 
      /echo GM has entered the zone! 
      /echo FUCK HIM but ending the macro... 
      /keypress forward 
      /keypress back 
      /quit 
      /endmacro 
   }
 
You deleted variables that are used in an /if statement... the AA vars.
 
Ok, got the macro running shaman is casting the buffs i want, but now he wont stop casting them. Even though i have them, like he will re buff when they fall off but after he casts buffs on me he just tries to cast buffs over and over, this is what i have if anyone can look at it and tell me what i need to change to stop him casting after buffs are on.
 
Opps here is what i have for the above message, thanks for the help :)

Code:
#Event SetTank "#1# tells you, 'settank #2# #3#'"

|################################################
Sub Main
	| Define your MainTank... this is changeable while the macro is running by having new main tank /tell you: secretphrase (see below)
	/declare MainTank string outer xxxxxxxxxxxxxxxxxxxxx
	/declare SecretPhrase string outer xxxxxxxxx

	| Define your Spells...
	/declare Spell_LANGUOR string outer	"Languor"
	/declare Spell_LYNX string outer	"Talisman of the Lynx"
	/declare Spell_CHAMPION string outer	"Champion"
	/declare Spell_HASTE string outer	"Talisman of Celerity"
	/declare Spell_UNITY string outer	"Talisman of Unity Rk. II"
	/declare Spell_CANNI string outer	"Ancestral Hearkening Rk. II"
	/declare Spell_HOT string outer		"Halcyon Zephyr Rk. II"
	/declare Spell_PATCH string outer	"Dannal's Mending Rk. II"
	/declare AA_SLOW string outer	        "Turgur's Swarm"
	/declare AA_Malo string outer		"Malosinete"
	/declare ITEM_Epic string outer		"Crafted Talisman of Fates"

	| Define what % mana you feel you should canni.
	/declare MinMana int outer 90

	| Define if you want to HoT (heal over time) or not. Also define what % health you want to HoT the MT.
	/declare DoHOT bool outer FALSE
	/declare DoHOTPercent int outer 85

	| Define if you want to PATCH heal or not. Also define what % health you want to heal the MT.
	/declare DoPATCH bool outer TRUE
	/declare DoPATCHPercent int outer 70

	| Define if you want to auto-slow mobs or not. Also define what % health you want to slow the mob.
	/declare DoSLOW bool outer TRUE
	/declare DoSLOWPercent int outer 97

	| Define if we want to malo mobs or not.
	/declare DoAAMalo bool outer TRUE

	|
	| Don't need to edit below this line!
	|

	| Lets see if a MT was passed as an argument to the macro.
	/if (${Defined[Param0]}) {
		| We have a MT passed, lets use that instead of our default!
		/varset MainTank ${Param0}
	}

	/echo Loaded Short Duration Buffs v1.0 by memset
	/echo MAIN TANK: ${MainTank}
	/echo CANNI AT %: ${MinMana}% Mana
	
	/if (${DoHOT}) {
		/echo HOT AT %: ${DoHOTPercent}%
	}

	/if (${DoPATCH}) {
		/echo PATCH AT %: ${DoPATCHPercent}%
	}

	| Check if MQ2Cast plugin is loaded, if it isn't... load it automatically. Thanks VillageIdiot & Unity!
	/if (!${Plugin[MQ2Cast].Name.Equal[mq2cast]}) /squelch /plugin MQ2Cast nocheck


	|################################################
	| START OF LOOP
	:start
	/doevents

	/call GMCheck

	|################################################
	| Target our MT.
	/target pc ${MainTank}
	/delay 1s

	|################################################
	| Make sure we have a target before continuing.
	/if (!${Target.ID}) {
		/goto :start
	}

	|################################################
	| Next, make sure we aren't invisible... if we ARE, don't cast anything.
	/if (${Me.Invis}) {
		/goto :start
	}

	|################################################
	| Also, if we are MOVING... we don't need to cast anything. Will be pointless.
	/if (${Me.Moving}) {
		/goto :start
	}

	|################################################
	| Finally, see if we're casting or not. This was added LATER... so it's slightly redundant below. Clean up later.
|	/if (${Me.Casting.ID}) /goto :start

	|################################################
	| Lets first make sure we don't need to heal the MT.
	| Do we need to PATCH heal the MT?
	/if (${Target.PctHPs} <= ${DoPATCHPercent} && ${DoPATCH}) {
		| It seems so. Better heal! Is the spell ready? Make sure we're not casting already...
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_PATCH}]} && ${Target.Distance} < 100) {
			/echo Healing ${MainTank} with ${Spell_PATCH}!
			/casting ${Spell_PATCH}
			/delay 2.5
		}
	}

	| Do we need to HoT the MT?
	/if (${Target.PctHPs} <= ${DoHOTPercent} && ${DoHOT}) {
		| It seems so. Better heal! Is the spell ready? Make sure we're not casting already...
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_HOT}]} && ${Target.Distance} < 100 && !${Target.Buff[${Spell_HOT}].Duration}) {
			/echo Healing ${MainTank} with ${Spell_HOT}!
			/casting ${Spell_HOT}
			/delay 2.5
		}
	}

	| There's a possibility that the shaman running this macro could be in need of a heal from canni... check now!
	/if (${Me.PctHPs} <= 80) {
		/target ${Me.CleanName}
		/delay 1s
		/casting ${Spell_PATCH}
		/delay 2.5
		/target pc ${MainTank}
		/delay 1s
	}

	|################################################
	| Lets see if the mob is malo'd... if not, and we're supposed to, then malo it.
	/if (${DoAAMalo} && ${Me.AltAbilityReady[${AA_Malo}]}) {
		| Yes... see if mob is malo'd already.
		/assist ${MainTank}
		/delay 1s
		/if (${Target.Buff[${AA_Malo}].Duration.Ticks} < 1 && ${Target.Type.Equal[NPC]} && ${Target.Distance} < 100 && ${Target.PctHPs} <= ${DoSLOWPercent}) {
			| Ok... malo the mob!
			/echo Malo'ing ${Target.CleanName} with ${AA_Malo}
			/aa act Malosinete
			/delay 4s
		}
	}

	|################################################
	| Now lets check if we need to slow a mob!
	/if (${DoSLOW}) {
		| Ok, we need to slow....maybe. Assist MT, check if it has been slowed already with our spell. Also verify it's an NPC.
		/assist ${MainTank}
		/delay 1s
		/if (${Target.Type.Equal[NPC]}) {
			| Verified this IS an NPC.
			| Check HP's... and if we've slowed already or not.
			/if (${Target.PctHPs} <= ${DoSLOWPercent} && !${Target.BuffDuration[${Spell_SLOW}]} && !${Me.Casting.ID} && ${Target.Distance} < 100 && ${Me.SpellReady[${Spell_SLOW}]}) {
				| HP's match and the mob isn't slow and I'm not casting... AND it's within range. lets slow this mob.
				/echo Slowing ${Target.CleanName} with ${Spell_SLOW}!
				/casting ${Spell_SLOW}
				/delay 1.5s
				/target pc ${MainTank}
				/delay 1s
			}
		}
		/target pc ${MainTank}
		/delay 1s
	}

	|################################################
	| Check if we need to rebuff LANGUOR:
	/if (${Target.BuffDuration[${Spell_LANGUOR}]} < 15 && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_LANGUOR}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_LANGUOR} on ${Target.CleanName}!
			/casting ${Spell_LANGUOR}
			/delay 2s
		}
	}

	|################################################
	| Check if we need to rebuff CHAMPION:
	/if (${Target.BuffDuration[${Spell_CHAMPION}]} < 15 && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_CHAMPION}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_CHAMPION} on ${Target.CleanName}!
			/casting ${Spell_CHAMPION}
			/delay 2s
		}
	}

	|################################################
	| Check if we need to rebuff LYNX:
	/if (!${Target.BuffDuration[${Spell_LYNX}]} && ${Target.Distance} < 50) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_LYNX}]}) {
			| Before we cast, lets make it so it only casts if MT has a mob targeted and the mob is closeby..
			/assist ${MainTank}
			/delay 1s

			/if (${Target.Distance} < 100 && ${Target.CleanName.NotEqual[${MainTank}]}) {
				| Good to go! Cast!
				/target pc ${MainTank}
				/delay 1s
				/echo Casting ${Spell_LYNX} on ${Target.CleanName}!
				/casting ${Spell_COUGAR}
				/delay 4s
			}
		}
	}

	|################################################
	| Check if we need to CLICK EPIC:
	/if (${FindItem[${ITEM_Epic}].Timer} == 0) {
		| Epic clicky is ready... do we need to click it?
		/assist ${MainTank}
		/delay 8
		/if (${Target.Distance} < 100 && ${Target.Type.Equal[NPC]}) {
			| Yep. Lets click it!
			/casting ${ITEM_Epic}
			/delay 1s
		}
	}

	|################################################
	| Check if we need to rebuff HASTE:
	/if (!${Target.BuffDuration[${Spell_HASTE}]} && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_HASTE}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_HASTE} on ${Target.CleanName}!
			/casting ${Spell_HASTE}
			/delay 4s
		}
	}

	|################################################
	| Check if we need to rebuff UNITY:
	/if (${Target.BuffDuration[${Spell_UNITY}]} <= 15 && ${Target.Distance}<100) {
		| Am I currently casting a spell? And is the spell ready?
		/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_UNITY}]}) {
			| Good to go! Cast!
			| /casting uses plugin mq2cast.
			/echo Casting ${Spell_UNITY} on ${Target.CleanName}!
			/casting ${Spell_UNITY}
			/delay 2s
		}
	}

	|################################################
	| Check if we need to cannibilize:
	/if (${Me.PctMana} <= ${MinMana} && ${Me.SpellReady[${Spell_CANNI}]}) {
		| Less than or equal to minimum percent of mana... lets canni.
		/echo Casting ${Spell_CANNI}!
		/casting ${Spell_CANNI}
		/delay 1s
	}


	/delay 1s
	/goto :start
/return


|################################################
Sub Event_SetTank(line, sender, new_tank, secretphrase)
	/if (${secretphrase.Equal[${SecretPhrase}]}) {
		/echo ${sender} sent secret phrase, setting ${new_tank} as tank!
		/varset MainTank ${new_tank}
		/target pc ${MainTank}
		/delay 1s
	}
/return

|################################################
Sub GMCheck 
   /if (${Spawn[gm].ID}) { 
      /beep 
      /beep 
      /beep 
      /echo GM has entered the zone! 
      /echo FUCK HIM but ending the macro... 
      /keypress forward 
      /keypress back 
      /quit 
      /endmacro 
   } 
/return
 
For the post above...

Ok now the only thing the shaman is casting over and over and over is the Talisman of Unity Rk. II, anyone know why he casts this spell over and over? How do i get him to just cast it once and then cast again when it wears off? Thanks again for the help guys
 
It looks like you took out the part where it targetted either the MT or you...as it goes from slowing the mob to buffing you.

The buffing part is based on checking the duration of the spell, which isn't on the mob. That's why it keeps hitting it. You probably want to add a check for the target type (PC or not) and then /target the MT or you, then worry about buffs.
 
Yea the MT is me *my shadowknight* i dont understand how to stop him from casting his buffs over and over, not sure what to enter there, guess i miss understand what your saying