My shaman mac, plus a request for help

Artemus

Lifetime Member
Joined
May 30, 2006
Messages
1,048
Reaction score
9
Points
38
This is my home grown shaman macro. However, there's a problem. I'm trying to figure out the best place to put /stance passive after combat ends, and /stance assist when it begins. See, he doesn't start till the target mob is at 97%. This gives time to get the mob in camp and the tank to get agro. But it isn't working.

Shaman macro info:

* Go through it, replace "Shaman" with your Shaman's name
* Do the same for Tank
* At 97%, he will stand and cast slow, cripple, Lynx and 2 dots. He cannis and uses Ancestral Obligation with LOM.
* He has a number of trigger commands used in group:
--rc = radiant cure
--sow = SoW
--focus = Group Unity
--regen = group regen
--fh = fast heal
--hot = halcyon whisper
* He will auto check your clickies to reactivate the clickies. I haven't put in code for crack potions yet.

Should work fine for all.

Code:
| Controller Macro 
| Usage : /macro Controller 
| Requirements: 
|-spell_routines.inc
|-MQ2MoveUtils
|-MQ2ReachIt
|-MQ2AutoAcceptTrades
|-MQ2AutoGroup
|-MQ2Reward
|-MQ2Exchange
|----------------------------------------------------------- 

#Event	AE		"Tank tells the group, 'AE'"
#Event	Quest		"Tank tells the group, 'Quest #1#'"
#Event	QuestComplete	"Your task #*# has been updated.
#Event	Fade		"Tank tells the group, 'FADE!'"
#Event  OutDoor		"You can not summon a mount here."
#Event	OutDoor		"#*#You can only cast this spell in the Outdoors#*#"
#Event	OutDoor		"#*#This spell does not work here.#*#"
#Event	Move		"Tank tells the group, 'Move'"
#Event	Invis		"Tank tells the group, 'Invis'"
#Event  Halt		"Tank tells the group, 'Halt'"
#Event	Come		"Tank tells the group, 'Come!'"
#Event	Call2Fellowship	"Tank tells the group, 'Come to Fellowship'"
#Event	Gate		"Tank tells the group, 'Gate'"
#Event	Camp		"Tank tells the group, 'Camp'"
#Event	Zoning		"LOADING, PLEASE WAIT..."
#Event	GotAggro	"#1#hits YOU for#*#" 
#Event	GotAggro	"#1#slashes YOU for#*#" 
#Event	GotAggro	"#1#crushes YOU for#*#" 
#Event	GotAggro	"#1#bashes YOU for#*#" 
#Event	GotAggro	"#1#kicks YOU for#*#" 
#Event	GotAggro	"#1#smashes YOU for#*#" 
#Event	GotAggro	"#1#mauls YOU for#*#" 
#Event	GotAggro	"#1#gores YOU for#*#" 
#Event	GotAggro	"#1#pierces YOU for#*#" 
#Event	GotAggro	"#1#Slices YOU for#*#"
#Event	GotAggro	"#1#bites YOU for#*#"
#Event	RageOn		"#*#|${Target.CleanName}| has become ENRAGED#*#"
#Event	RageOff		"#*#|${Target.CleanName}| is no longer enraged#*#"
#Event	Dead		"You have been slain by #*#"
#Event	Dead		"You died."


#include spell_routines.inc

Sub Main

  /declare tank 	string	outer	Tank
  /declare shaman	string	outer	SHaman
  /declare nukedelay 	timer	outer	5s
  /declare FadeTimer 	timer	outer	0
  /declare OutDoors	bool	outer   TRUE
  /declare Mobile	bool	outer	FALSE
  /declare WGTimer	timer	outer
  /declare HoTTimer	timer	outer

  /if (${Me.Class.Name.Equal[Shaman]}) {
     |configure slow spell here
     /declare debuffspell1 string outer Balance of Discord
     /declare debuffgem1 string outer gem1

     /declare debuffspell2 string outer Crippling Spasm
     /declare debuffgem2 string outer gem3

     |configure dots here
     /declare dot1 string outer Mojo
     /declare dot1gem string outer gem9

     /declare dot2 string outer Blood of Jaled'Dar Rk. II
     /declare dot2gem string outer gem8

     |configure mana to stop doting here
     /declare stopmana int outer 20

/declare BuffSub int outer 1
/declare BuffSpells int outer 3
/declare BuffSpell1 string outer "Form of Endurance III" 
/declare BuffSpell2 string outer "Geomantra" 
/declare BuffSpell3 string outer "Reyfin's Random Musings" 

/declare BuffSpellName1 string outer "Brass Facade"
/declare BuffSpellName2 string outer "Pyroclast of the Crystal Core" 
/declare BuffSpellName3 string outer "Hollowed Bone Section"  

/declare BuffSpellGem1 string outer item 
/declare BuffSpellGem2 string outer item 
/declare BuffSpellGem3 string outer item 


/call Shaman
}


  /echo Unusable class - ending.
/end

|-------------------------------------------------------------------------------- 
|Code: Shaman
|--------------------------------------------------------------------------------

Sub Shaman
 /echo Starting Shaman Controller...
  /declare TempID1 int inner 0
  /declare TempID2 int inner 0
:topshaman
   /doevents
   /if (${Spawn[npc radius 100 zradius 50].ID}==0) /call ShamanBuffs
|  /call HealGroup
   /assist ${tank}
/if (!${Me.Mount.ID} && ${Me.State.Equal[STAND]} && ${Me.CombatState.NotEqual[COMBAT]}) /sit

/if (!${Target.ID} || ${Target.Type.NotEqual[NPC]} || ${Target.Distance}>150 || ${Target.PctHPs}>97) /goto :topshaman

|-------------------------------------------------------------------------------- 
|Code: Shaman Combat
|-------------------------------------------------------------------------------- 

|/alt activate 1041
/delay 2s
/pet kill
/stance assist

:combatshaman
  /assist ${tank}
  /doevents

/if (!${Target.ID} || ${Target.Type.NotEqual[NPC]} || ${Target.Distance}>150 || ${Target.PctHPs}>97) /goto :topshaman

/delay 4s ${Me.SpellReady[${debuffspell1}]}
  /if (!${slowed${Target.ID}}) {
     /call Cast "${debuffspell1}" "${debuffgem1}"
| /echo Slow spell returned ${castReturn}
     /delay 3s
     /if (${Macro.Return.Equal[CAST_IMMUNE]}) /declare slowed${Target.ID} timer outer 20m
     /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
        /if (!${Defined[slowed${Target.ID}]}) /declare slowed${Target.ID} timer outer
        /varset slowed${Target.ID} 1.5m
     }
  }
   /if (!${crippled${Target.ID}} && ${Me.SpellReady[${debuffspell2}]}) {
     /call Cast "${debuffspell2}" "${debuffgem2}"
     /delay 1s
     /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
        /if (!${Defined[crippled${Target.ID}]}) /declare crippled${Target.ID} timer outer
        /varset crippled${Target.ID} 7.5m
     }
  }

/if (!${Me.Buff[Talisman of the Lynx].ID})  /call Cast "Talisman of the Lynx" gem6

|/if (${WGTimer}==0) {
|	/varset TempID1 ${Target.ID}
|     	/target ${tank}
|    	/delay 2s
|	:ReCast1
|	/call Cast "Wild Growth Rk. II" gem5
|	/if (${Macro.Return.Equal[CAST_FIZZLE]}) /goto :ReCast1
|	/varset WGTimer 4m
|	/target id ${TempID}
|}  

  /if (${Target.PctHPs}>10 && ${Me.PctMana}>${stopmana}) {
     /if (!${dot1${Target.ID}} && ${Me.SpellReady[${dot1}]}) {
        /call Cast "${dot1}" "${dot1gem}"
        /if (!${Defined[dot1${Target.ID}]}) /declare dot1${Target.ID} timer outer
        /varset dot1${Target.ID} 1m
     }
     /if (!${dot2${Target.ID}} && ${Me.SpellReady[${dot2}]}) {
        /call Cast "${dot2}" "${dot2gem}"
        /if (!${Defined[dot2${Target.ID}]}) /declare dot2${Target.ID} timer outer
        /varset dot2${Target.ID} 1m
     }
  }
  /call HealGroup
  /goto :combatshaman
/return

|-------------------------------------------------------------------------------- 
|Code: Shaman Check BUffs
|-------------------------------------------------------------------------------- 

Sub ShamanBuffs
  /if (${Me.Pet.Name.Equal[#Shaman`s_familiar00]}) /pet get lost
  /if (${Me.Pet.ID}==0) {
     /call Cast "Aina's Faithful Rk. II" gem10
     /memspell 10 "Ancestral Obligation Rk. II"
     /delay 2s
  }

  /if ((!${Me.Buff[Familiar: Emerald Sokokar].ID}) && (!${Me.Pet.ID}==0)) /call Cast "Familiar of the Emerald Jungle" item
  /if ((${Me.PctHPs}>80) && (${Me.PctMana}<70)) /call Cast "Cannibalization" alt 
  /if ((${Me.PctHPs}>70) && (${Me.PctMana}<80)) /call Cast "Ancestral Obligation Rk. II" gem10 

  /if (${Me.PctHPs}<75) {
	/tar ${shaman}
	/call Cast "Halcyon Whisper Rk. II" gem4 
}

/if (${Me.Buff[Darkpaw Focusing Rk. II].Duration}<5) {
	/memspell "Talisman of Unity Rk. II" 7
	/target Shaman
	/call Cast "Talisman of Unity Rk. II"
	/delay 8s
}

/if (${Me.Buff[Talisman of the Resolute Rk. II].Duration}<5) {
	/call Cast "Talisman of the Resolute Rk. II" gem7
	/delay 4s
}

/for BuffSub 1 to ${BuffSpells} 
   /if (${Me.Buff[${BuffSpell${BuffSub}}].Duration}<2) { 
      /target ${Me.Name}
	/memspell ${BuffSpellName${BuffSub}} ${BuffSpellGem${BuffSub}}
      /call Cast ${BuffSpellName${BuffSub}}  ${BuffSpellGem${BuffSub}} 
   }
   /next BuffSub 



/return

|-------------------------------------------------------------------------------- 
|Code: Shaman Heal Group
|-------------------------------------------------------------------------------- 

Sub HealGroup
  /declare TempID3 int inner 0
  /declare i int local 0 
  /declare j int local 100 
  /declare k int local 
  /doevents
  /for i 0 to ${Math.Calc[${Group.GroupSize}-1]} 
    |/echo ${i} ${Group.Member[${i}].PctHPs} 
    /if (${Group.Member[${i}].PctHPs} < (${j}-1)) { 
       |/echo less than ${j} - ${i} ${Group.Member[${i}].PctHPs} 
       /varset j ${Group.Member[${i}].PctHPs} 
       /varset k ${i} 
    } 
  /next i 

  /if (${j} > 60) { 
     |/echo ${Group.Member[${k}]} has ${j}% HP 
     |/echo Not missing enough to heal 
     /return 
  } 

  |/echo ${Group.Member[${k}]} has ${j}% HP 
  /if ((${Me.Gem[Dannal's Mending Rk. II]})&&(${Me.SpellReady[Dannal's Mending Rk. II]})) { 
     /gsay Healing ${Group.Member[${k}]}'s ass in ${Spell[Dannal's Mending Rk. II].MyCastTime} secs. 
     /varset TempID3 ${Target.ID} 
     /target ${Group.Member[${k}]} 
     /call Cast "Dannal's Mending Rk. II" gem2
     /target id ${TempID3} 
  }
/return

|-------------------------------------------------------------------------------- 
|Code: Shaman Local Events 
|-------------------------------------------------------------------------------- 

#Event rTellR "#1# tells the group, 'regen'"
Sub Event_rTellR(string line,string Requester)
  /target pc ${Requester}
  /gsay Buffing Talisman of the Resolute Rk. II.
  /memspell "Talisman of the Resolute Rk. II" gem7
  /call Cast "Talisman of the Resolute Rk. II" gem7
	/delay 4s
/return


#Event rTellHot "#1# tells the group, 'hot'"
Sub Event_rTellHot(string line,string Requester)
  /if ((${Me.Gem[Halcyon Whisper Rk. II]})&&(${Me.SpellReady[Halcyon Whisper Rk. II]})) {
     /gsay HoT in ${Spell[Halcyon Whisper Rk. II].MyCastTime} secs.  
     /target pc ${Requester}
     /call Cast "Halcyon Whisper Rk. II" gem4
  }
/return


#Event rTellHl "#1# tells the group, 'fh'"
Sub Event_rTellHl(string line,string Requester)
  /if ((${Me.Gem[Dannal's Mending Rk. II]})&&(${Me.SpellReady[Dannal's Mending Rk. II]})) {
     /target ${Requester}
     /gsay Healing %T's ass in ${Spell[Dannal's Mending Rk. II].MyCastTime} secs.  
     /declare TempID4 int inner 0  
     /varset TempID4 ${Target.ID} 
     /call Cast "Dannal's Mending Rk. II" gem2
     /target id ${TempID4} 
  }
/return

#Event Slow "#1# tells the group, 'slow'"
Sub Event_Slow
  /if (${Me.Class.Name.NotEqual[Shaman]}) /return
  /assist ${tank}
  /delay 1
  /gsay SLOWING %T!
  /if (!${slowed${Target.ID}} && ${Me.SpellReady[${debuffspell1}]}) {
     /call Cast "${debuffspell1}" "${debuffgem1}"
     /delay 1
     /if (${Macro.Return.Equal[CAST_IMMUNE]}) /declare slowed${Target.ID} timer outer 20m
     /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
        /if (!${Defined[slowed${Target.ID}]}) /declare slowed${Target.ID} timer outer
        /varset slowed${Target.ID} 1.5m
        /gsay SLOWED %T.
     }
  }
/return


#Event RCReq "#1# tells the group, 'rc'"
Sub Event_RCReq(string line,string Requester)
  /alt activate 153
  /delay 4s
/return

#Event rTellHa "#1# tells the group, 'haste'"
Sub Event_rTellHa(string line,string Requester)
  /target ${Requester}
  /memspell 7 "Talisman of Celerity"
  /gsay Haste Inc.
  /call Cast "Talisman of Celerity" gem7
  /delay 4s
/return

#Event Focus "#1# tells the group, 'focus'"
Sub Event_Focus(string line,string Requester)
  /tar ${Requester}
  /gsay Buffing Talisman of Unity on %T.
  /call Cast "Talisman of Unity Rk. II" gem7
  /delay 10s
/return

#Event Shrink "#1# tells the group, 'shrink'"
Sub Event_Shrink(string line,string Requester)
  /if (${Me.Class.Name.NotEqual[Shaman]}) /return
  /memspell 8 "Shrink"
  /if ((${Me.Gem[Shrink]})&&(${Me.SpellReady[Shrink]})) {
     /target ${Requester}
     /call Cast "Shrink" gem8
	/delay 3s
	/memspell 8 "Mojo"
	/delay 2 ${Me.Gem[Mojo]}
  }

/return

#Event SOW "#1# tells the group, 'sow'"
Sub Event_SOW(string line,string Requester)
  /target ${Requester}
  /memspell "Spirit of Bih`Li" gem7
  /call Cast "Spirit of Bih`Li" gem7
  }

/return


Sub Event_OutDoor 
  /echo This is an indoor zone. Sorry. 
  /varset OutDoors FALSE 
/return
 
So, can anyone help me with the merc?
 
there is atleast 3 shaman macro's out there that have included in them what you are asking for.
 
Because none of them were to my liking, that's why I created it.