Shaman Mac (KISS)

ColinB

Lifetimer
Joined
Feb 18, 2008
Messages
39
Reaction score
0
Points
0
Two versions, one that is meant to run while you're playing the shaman, to automate things that are a pain in the ass. (Lynx, spot heals, group heals (panic), champ, Epic). The other will assist the tank you specify and Slow/DoT, then do all the stuff that the first one does.


I welcome your feedback on how to do this better. I originally used some of the other shaman macros but found they did too much or were too slow. I dont want automated buffing, etc just a helping hand while i play. (Or a helping hand while i play a 2nd toon)


EDIT: <some things i should have said>

USAGE:
/mac kiss-shaman
or
/mac kiss-shaman-assist MA_NAME

MA_NAME must be a PC, in the zone, (it checks that its a PC) and not a MERC or PET. you can remove the check (its about 4 posts down in the thread). Lets see what else I missed.

EDIT: Reuploaded files since they got gimped somehow.
 

Attachments

  • kiss-shaman.mac
    3.9 KB · Views: 164
  • kiss-shaman-assist.mac
    7.2 KB · Views: 226
Looks good, anyway to have the assist one also keep wild growth on main tank when in combat?
 
More details could help people decide which one they need. Looks like the Assist one does slowing.
 
Yea was curious if it was possible to keep certain buffs on MA, wildgrowth lingering sloth line, (unlike champ or lynx they are single target so not sure how hard it would be).

been looking at other shaman macros to see if I could borrow those subs, autobuff plugin prob takes care of self buffing, not sure what would be the best way to tackle minor MA buff upkeep.

Not 100 sure how but is this going in the right direction? (maybe more of a holy shit train of thought):

/if (${Me.CombatState.Equal[COMBAT]} && ${Spawn[${MA} radius 100].ID} && !${MA.Buff[Wild Growth].ID}) /multiline ; /target ${MA} ; /timed 10 ; /casting.................

What I dont understand is whether {MA} is a function of the macro or something like Melee picks it up (then i could try a holy shit)
 
Ok here's the breakdown of what it does and why it's like that for me. YMMV.

1. Sub Main has the calls to the various subs that do the real work. If you dont want panther, or something like that, then comment it out right here.

2. Each of the Subs does pretty much what its name says

GroupHeals_Check:
I picked some arbitrary threshold values (30,50,70,90% hp) and count how many group members are below that threshold. That lets me quickly decide how deep the shit has gotten, and how much we need to heal.

Depending on the thresholds It may cast Ancestral Intervention, Ancestral Aid (AA), or group HoT Shadow of renewal. Or it may cast them ALL! Tweak the three if statements at the end of this to match your typical groups healing requirements and your shaman's mana and aa mix.

Heal_Check:
Goes through each member of your group and checks to see if they're below ${SingleHealPct} (By the way i type /varset SingleHealPct xxx while the macro is running to fine tune things if im not happy, never bothered to make an ini file because this setup works for me in almost all circumstances)

Epic_Check:
It only checks to see if you're in combat, that you dont have the epic proc up, and that the epic is ready to go. if those are true it clicks your epic. If you want it to be more descriminatory, then you get to add some more /IFs. Personally I use the epic in most group events as pure dps enhancer so i let it fire every time its up and we're in combat. I don't let it fire at all on raids (I have a version with this sub commented out).

Lynx + Champion:
Both of these are GROUP buffs, and so to see if your group needs them you check only your own buffs. Nice and simple. If you want the macro to do other buffs feel free to add a timer, and make it cast, but I still play the shaman while running this, so buffing is no big deal for me. I cast what is needed manually.

Canni_Check:
This one has some very minor safety checks to make sure that it doesnt aa canni if you have less than 7k hp or spell canni with less than 4k hp. The rationale is that while you might still live, you're pretty much guaranteed to get low hp aggro then. Better that you make the call.


In the non targetting version, it will preserve whatever target you have if it decides it needs to heal your group. Once its done with the heal it will put your target back to what it was, so you can continue to nuke/dot/etc to your hearts content.

------------

For the assist version here's the criteria.

You run the macro and assign it the name of a tank to assist (he doesnt need to be in your group, but he wont get any of the nice hp monitoring, etc if he's not since this is NOT a PL bot.)

Get_Target:
The macro will assist the tank anytime he is within 100 radius. If his target is an NPC and not a PC's pet then it will face it and delay for 5seconds or until the npc is within 90' Then it will return with this as your target.

Do_Slow:
This will wait 20 seconds or until your target is < 98% hp, and within 200' then it will AA Malo and AA Slow. (The delay and extra check is there because if you manually target a mob then Get_Target's checks never took place and it will still try and not screw things up and get you adds)

DoT_Check:
Pure sloppy code, this one just says as long as i have more than 60% mana, and my target is over 90% hp then cast 2 dots. This means that if you point it at a raid mob its gonna cast the same 2 dots over and over..... dont raid with this is what im saying... pay attention and earn your keep.

The rest of the assist version is the same as the original.

----

What i was going for was a tool to assist in PLAYing the shaman, not a rehash of the existing, take over your shaman and play it for you macros that are already there and are damn good for that matter. There are alot of them out there.


Hope that helps with the "what does it do" I figured you'd just read it. :)

EDIT: minor typo corrections.
 
[MQ] Main Assist must be a PC.

The current macro has ended.
 
/if (${Me.CombatState.Equal[COMBAT]} && ${Spawn[${MA} radius 100].ID} && !${MA.Buff[Wild Growth].ID}) /multiline ; /target ${MA} ; /timed 10 ; /casting.................

What I dont understand is whether {MA} is a function of the macro or something like Melee picks it up (then i could try a holy shit)

${MA} is a variable set by the macro on the initial run with its first parameter (defined as a string outer) if you were to change its name and make it a string global you might be able to use it in a holy shit while the macro was running.... but otherwise var scope isnt going to let you.

I'll think on the Wild Growth thing, but inspecting group members buffs depends on the leadership ability and i hate having a dependency on that since when i join someone elses group they may just suck for LA.

Also note ${MA} isnt a TLO nor is it of type spawn (its a string name of the toon in question) so your syntax there is good for indicating intent but looks nothing like what you'd end up with if you wanted a working function.

I'll think on the single buffs line languor/lassitude/wild growth/etc for the MA and make them an option but i'll probably just make them timed since they're all short duration.
 
[MQ] Main Assist must be a PC.

The current macro has ended.

Sub Main
/if (!${Defined[Param0]}) {
/if (!${Spawn[${MA}].Type.Equal[PC]}) {
/echo Main Assist must be a PC
/endmac
}

/echo Usage /macro kiss-shaman MA_NAME
/endmac
}


Sorry run it with a parameter and make that parameter the valid name of a PC to assist, not a pet or a merc.... if you want to remove the check then remove the highlighted lines
 
Wish I could use it for my mercwar. But I tried it both on the ranger who was standing next to the shaman and on the mercwar.

I don't understand what you are saying as to how to fix it. You are saying if I remove the PC check, it will still run?
 
Wish I could use it for my mercwar. But I tried it both on the ranger who was standing next to the shaman and on the mercwar.

I don't understand what you are saying as to how to fix it. You are saying if I remove the PC check, it will still run?

Yes MissT. Remove the PC confirm check on the MA and it would work for your merc. Merc's don't show as PC spawns which his MA check is checking for.
 
Tried it today. I don't have those AAs. Thanks anyway.
 
Works pretty good - wouldnt mind having wild growth, hot heal, and pet attack in this. So far so good mate.
 
pet attack can be done w melee

been thinking too that melee could do grp hot

if combat state and health below certain percent, and buff (hot) not on me cast grp hot

can also do one

if out of combat and percent health below certain percent and buff (hot) not me cast grp hot (would be for canni when out of combat)

that's the idea, I think I have the syntax somewhere too

I do think that there are some other sham macs out there that follow up canni w hot but would have to look closer.

thats a simple way possibly of doing it, if you dont mind the grp version
 
The group HoT is already in there, the single one isn't.

If you want to add a self targetted hot after canni add this code in the canni sub:

Code:
Sub Canni_Check
/declare pct_mana float local
[COLOR="Red"]/declare oldtgtid int local ${Target.ID}[/COLOR]
/varcalc pct_mana ${Me.CurrentMana}/${Me.MaxMana}

/if (${Me.CurrentHPs} > 7000 && ${pct_mana} < 0.76 && ${Me.AltAbilityReady[Cannibalization]}) {
  /echo Using Cannibalization AA
  /call MQ2Cast "Cannibalization" alt
  [COLOR="Red"]/target myself
  /call MQ2Cast "Halcyon Zephyr" gem2 4s
  /target id ${oldtgtid} [/COLOR]
}

/if (${Me.CurrentHPs} > 4000 && ${pct_mana} < 0.95 && ${Me.SpellReady[Ancestral Obligation Rk. II]}) {
  /echo Casting Ancestral Obligation Rk. II
  /call MQ2Cast "Ancestral Obligation Rk. II" gem10 4s
}

/return

I don't do this, since i've got enough HP that I usually don't bother healing myself after canni. I heal myself instead when i cross the macro's SingleHealPct threshold.
 
Last edited:
Works pretty good - wouldnt mind having wild growth, hot heal, and pet attack in this. So far so good mate.

Pet attack in the "assist" version would be:

Code:
Sub Get_Target
  /if (${Me.Casting.ID}) /return
  /if (${Me.Moving}) /return 

  :Acquire_Target
  |* If the MA is within a 100 radius then go ahead and assist, and slow if his target is a mob <100% hp.
  /if (${Spawn[${MA} radius 100].ID}) {
    /squelch /target clear
    /assist ${MA}
    /delay 1s ${Target.ID}
    
    /if (!${Target.ID} || !${Target.Type.Equal[NPC]}) { 
      /delay 3s
      /goto :Acquire_Target
      /return
    }

    /if ((${Spawn[${Target.ID}].Type.Equal[npc]} || ( ${Spawn[${Target.ID}].Type.Equal[pet]} && !${Spawn[${Target.ID}].Master.Type.Equal[pc]}))) {
      /if (${MyTargetID} != ${Target.ID}) {
        /face
        /echo New Target: ${Target.Level} ${Target.Class} ${Target.CleanName} ${Target.ID}
        /varset MyTargetID ${Target.ID}
        /delay 5s ${Target.Distance} <= 90
	[COLOR="Red"]/pet attack[/COLOR]
      }
    }
  }
/return


The above is of course a quick hack.

You can add a sub that checks for valid target, and valid %hp, and that you have a pet up, and sic pet.
 
i found this shaman mac will keep heal corpse in ur group ............
how to debug ?
=================================================================================
Sub Heal_Check
/if (${Me.Casting.ID}) /return
/if (${Me.Moving}) /return

/declare oldtgtid int local ${Target.ID}
/declare i int local 0
/for i 0 to ${Group.Members}
/if (${Group.Member[${i}].PctHPs} <= ${SingleHealPct} && ${Group.Member[${i}].PctHPs} > 1 && ${Group.Member[${i}].PctHPs} > NULL && ${Group.Member[${i}].LineOfSight} ) {
/target id ${Group.Member[${i}].ID}
/echo ${Group.Member[${i}].CleanName} @ ${Group.Member[${i}].PctHPs} --> Healing
/call cast "Dannal's Mending Rk. II" gem8 5s
/target id ${oldtgtid}
}
/next i
/return
 
pet attack can be done w melee

been thinking too that melee could do grp hot

if combat state and health below certain percent, and buff (hot) not on me cast grp hot

can also do one

if out of combat and percent health below certain percent and buff (hot) not me cast grp hot (would be for canni when out of combat)

that's the idea, I think I have the syntax somewhere too

I do think that there are some other sham macs out there that follow up canni w hot but would have to look closer.

thats a simple way possibly of doing it, if you dont mind the grp version

can u list this holyflag pls ?
 
is it ok to increase mac :

Sub Listlessness_Check
/if (${Me.Casting.ID}) /return
/if (${Me.Moving}) /return

/if (${Me.CombatState.Equal[COMBAT]} && ${Spawn[${MA} radius 100].ID} && !${MA.Buff[Listlessness].ID}) {
/echo Casting Listlessness --( ${Target.CleanName} )--
/call cast "Listlessness" gem4 6s
}
/return


Sub WildGrowth_Check
/if (${Me.Casting.ID}) /return
/if (${Me.Moving}) /return

/if (${Me.CombatState.Equal[COMBAT]} && ${Spawn[${MA} radius 100].ID} && !${MA.Buff[Wild Growth].ID}) {
/echo Casting Wild Growth --( ${Target.CleanName} )--
/call cast "Wild Growth" gem0 6s
}
/return
 
another question.
how can i set up mac to heal mag pet?

thank u for ur help