This macro goes through your group and depending on group member class launches AFNuke2, AutoCleric, or Kissassist for each one.
The main reason I wanted this is because I will be going to custom KA INI's for all my toons depending on level (5 lvl increments). I wanted this framework to work off of. I plan on extrapolating via group member level and class, which KA INI to use. That is not implemented yet.
Upcoming releases/future features:
Features I am considering:
Usage:
Settings:
If you find this useful, hit the THANKS.
-------------------------------------------------------------------------------------------------
*** Incog's MQ2StartMacs - Beta 1 - 2016 ***
The main reason I wanted this is because I will be going to custom KA INI's for all my toons depending on level (5 lvl increments). I wanted this framework to work off of. I plan on extrapolating via group member level and class, which KA INI to use. That is not implemented yet.
Upcoming releases/future features:
- Launch AFNuke85, AFNuke100 and AFNuke2 depending on level.
- Launch KissAssist for any wizzy under lvl 85.
- Launch KissAssist for any cleric under AutoCleric's level range.
- Custom KA INI's mentioned above.
- AdvPath PathNames (puller/pullertank) to be handed to KA at startup.
Features I am considering:
- If no MA is detected in group, use whatever target each toon has for Assist assignment (i.e. /bcg //tar ID ${Me.ID}).
- OR - If no MA is detected, MT will assume MA role and others will assist it.
Usage:
- Have EQBCS running
- Create Group
- Assign MainTank, MainAssist, and Puller in group window. Puller is optional if you wanted to run a toon manually (not tested). You would have to turn on/off the various KA [Sections] to accommodate.
- You can assign Master Looter too since KA9 Release will not over-ride your ML as long as group leader is started last, which it will be. You see that Hoosier?
- Run this mac from Group Leader.
Settings:
- Set Debug TRUE if you want/need bread-crumb to go to MQ2Win
- Set Broadcast TRUE/FALSE to turn on/off basic messages
- Set ACName to whatever version of AutoCleric you are using (name of mac) defaults to AutoCleric
- Set KAName to whatever version of KissAssist you are using (name of mac) defaults to KissAssist
- Set AFNWiz to FALSE if you want your Wiz to be given over to KissAssist (for whatever reason)
- Set ACClr to FALSE if you want your Clr to be given over to KissAssist (for whatever reason)
- Set AllowWizClr to TRUE if you want your Wiz or Clr to be allowed to be MA or MT (for whatever reason - could be farming tradeskill items from grey cons, or needing to be group controller for task /ground spawns etc). I am undecided at this time whether or not I want to keep that functionality.
If you find this useful, hit the THANKS.
-------------------------------------------------------------------------------------------------
*** Incog's MQ2StartMacs - Beta 1 - 2016 ***
Rich (BB code):
| MQ2StartMacs.mac - Incognito
| This mac will check everyone in your group to see if they are in the same zone, not Offline, a PC (excluding mercs), and start a macro depending on class.
| Clerics get AutoCleric, Wiz's get AFNuke2 (regretfully configurable). All others get Kissassist.
| It is assumed you have created your group, and assigned MA, MT, & Puller.
| We assign our own macro seperately and lastly due to this mac will abort once launching our own macro.
| It is also assumed you have EQBC up and running and you are connected.
| ** Upcoming functionality - TODO **
| Handle custom INI's
| Handle AdvPath PathNames for pulling
| If no MA is detected then macro startups will attempt to use whoever that toon has targeted. So you could do a /bcg //tar ID ${Me.ID}.
| If MA does not detect Tank then it will assume Tank Role. If MT does not detect MA then it will assume MA and others will Assist it.
| Assignement of AFNuke2, AFNuke100 or AFNuke85 depending on toons level.
| ------------------------------------------------------------------------------------------------
| ** Usage **
| ------------------------------------------------------------------------------------------------
| * Have EQBCS running
| * Create Group
| * Assign MainTank, MainAssist, and Puller in group window
| * You can assign Master Looter too since KA9 Release will not over-ride your ML as long as
| group leader is started last, which it will be.
| * Run this mac from group leader
| ------------------------------
| * SETTINGS *
| ------------------------------
| * * Set Debug TRUE if you want/need bread-crumb to go to MQ2Win
| * * Set Broadcast TRUE/FALSE to turn on/off basic messages
| * * Set ACName to whatever version of AutoCleric you are using (name of mac)
| * * Set KAName to whatever version of KissAssist you are using (name of mac)
| * * Set AFNWiz to FALSE if you want your Wiz to be given over to KissAssist (for whatever reason)
| * * Set ACClr to FALSE if you want your Clr to be given over to KissAssist (for whatever reason)
| * * Set AllowWizClr to TRUE if you want your Wiz or Clr to be allowed to be MA or MT (whatever)
| I am undecided at this time whether or not I want to keep that functionality.
| ------------------------------------------------------------------------------------------------
| ------------------------------------------------------------------------------------------------
Sub Main
/echo *** Incog's MQ2StartMacs - Beta 1 - 2016 ***
/declare ACName string outer AutoCleric
/declare KAName string outer kissassist
/declare Debug bool outer FALSE
/declare Broadcast bool outer TRUE
/declare AFNWiz bool outer TRUE
/declare ACClr bool outer TRUE
/declare AllowWizClr bool outer TRUE
| --------------------------------------------
| ** Do NOT change these - internal use vars
| --------------------------------------------
/declare MyInd int outer
/declare x int local 0
/declare MA string outer
/declare MT string outer
/declare GetOut bool outer FALSE
/declare CSN string outer
| --------------------------------------------
/varset MA ${Group.MainAssist}
/varset MT ${Group.MainTank}
/if (!${Group.Members}) {
/echo YOU have not created a group yet. Aborting.
/return
}
/if (${MA.Find[null]}) {
/echo Please assign MainAssist in Group Window. Aborting.
}
/if (${MT.Find[null]}) {
/echo Please assign MainTank in Group Window. Aborting.
}
/if (${MT.Find[null]} || ${MA.Find[null]}) /return
/if (${Broadcast} || ${Debug}) /echo Detected MA: ${Group.MainAssist} - ${Group.MainAssist.Class} - MT: ${Group.MainTank} - ${Group.MainTank.Class}
| ** Undecided yet if I want to allow a WIZ/CLR to be able to be MA/MT **
/if (${Select[${Group.MainAssist.Class},WIZ,CLR]} && !${AllowWizClr}) {
/echo WIZ or CLR detected as MA. Aborting.
/return
}
/if (${Select[${Group.MainTank.Class},WIZ,CSN]} && !${AllowWizClr}) {
/echo WIZ or CLR detected as MT. Aborting.
/return
}
| start at 1 instead of 0 to exclude yourself, we are doing ourself last after the loop
/for x 1 to ${Group}
/if (${Debug}) /echo INSIDE Loop - X: ${x} - OtherZone: ${Group.Member[${x}].OtherZone} - Type PC: ${Group.Member[${x}].Type.Equal[PC]} - OffLine: ${Group.Member[${x}].Offline}
/if (${Broadcast}) /echo Processing GroupMember ${x} - ${Group.Member[${x}].Name} a ${Group.Member[${x}].Class.ShortName}
/If (!${Group.Member[${x}].OtherZone} && ${Group.Member[${x}].Type.Equal[PC]} && !${Group.Member[${x}].Offline}) {
/varset CSN ${Group.Member[${x}].Class.ShortName}
/call CheckForAFNuke ${x} ${CSN}
/if (!${Macro.Return}) /call CheckForAC ${x} ${CSN}
/if (!${Macro.Return}) /call CheckForAssist ${x} ${CSN}
/if (!${Macro.Return}) /call CheckForPullerTank ${x} ${CSN}
/if (!${Macro.Return}) /call CheckForPuller ${x} ${CSN}
/if (!${Macro.Return}) /call CheckForTank ${x} ${CSN}
/doevents
}
/varset GetOut FALSE
/next x
/if (${Debug}) /echo After LOOP - MacReturn: !${Macro.Return} - GetOut: ${GetOut}
/varset MyInd ${Group.Member[${Me}].Index} | should be zero
/varset CSN ${Group.Member[${MyInd}].Class.ShortName}
| /varset GetOut FALSE
/if (${Debug}) /echo Last Member (Me) MyInd: ${MyInd} - MyClass: ${CSN} - MacReturn: ${Macro.Return} - GetOut: ${GetOut}
/if (${Broadcast}) /echo I am ${Group.Member[${MyInd}].Name} a ${CSN}
/call CheckForAFNuke ${MyInd} ${CSN}
/if (!${Macro.Return}) /call CheckForAC ${MyInd} ${CSN}
/if (!${Macro.Return}) /call CheckForAssist ${MyInd} ${CSN}
/if (!${Macro.Return}) /call CheckForPullerTank ${MyInd} ${CSN}
/if (!${Macro.Return}) /call CheckForPuller ${MyInd} ${CSN}
/if (!${Macro.Return}) /call CheckForTank ${MyInd} ${CSN}
/return
Sub CheckForAC(int GrpMemNum, string CName)
/if (${Debug}) /echo Inside CheckForAC GrpMemNum: ${GrpMemNum} - CName: ${CName} - ACFlag: ${ACClr}
/if (${Select[${CName},CLR]} && ${ACClr}) {
/call DoAutoCleric ${GrpMemNum}
/varset GetOut TRUE
}
/return ${GetOut}
Sub CheckForAFNuke(int GrpMemNum, string CName)
/if (${Debug}) /echo Inside CheckForAFNuke GrpMemNum: ${GrpMemNum} - CName: ${CName} - WizFlag: ${AFNWiz}
/if (${Select[${CName},WIZ]} && ${AFNWiz}) {
/call DoAFNuke2 ${GrpMemNum}
/varset GetOut TRUE
}
/return ${GetOut}
Sub CheckForPullerTank(int GrpMemNum, string CName)
/if (${Debug}) /echo Inside CheckForPullerTank GrpMemNum: ${GrpMemNum} - CName: ${CName}
/if (!${Select[${CName},CLR,WIZ]} && ${Group.Member[${GrpMemNum}].MainTank} && ${Group.Member[${GrpMemNum}].Puller}) {
/call DoKAPullerTank ${GrpMemNum}
/varset GetOut TRUE
}
/return ${GetOut}
Sub CheckForTank(int GrpMemNum, string CName)
/if (${Debug}) /echo Inside CheckForTank GrpMemNum: ${GrpMemNum} - CName: ${CName}
/if (!${Select[${CName},CLR,WIZ]} && ${Group.Member[${GrpMemNum}].MainTank} && !${Group.Member[${GrpMemNum}].Puller}) {
/call DoKATank ${GrpMemNum}
/varset GetOut TRUE
}
/return ${GetOut}
Sub CheckForPuller(int GrpMemNum, string CName)
/if (${Debug}) /echo Inside CheckForPuller GrpMemNum: ${GrpMemNum} - CName: ${CName}
/if (!${Select[${CName},CLR,WIZ]} && !${Group.Member[${GrpMemNum}].MainTank} && ${Group.Member[${GrpMemNum}].Puller}) {
/call DoKAPuller ${GrpMemNum}
/varset GetOut TRUE
}
/return ${GetOut}
Sub CheckForAssist(int GrpMemNum, string CName)
/if (${Debug}) /echo Inside CheckForAssist GrpMemNum: ${GrpMemNum} - CName: ${CName}
/if (!${Group.Member[${GrpMemNum}].MainAssist} !${Group.Member[${GrpMemNum}].MainTank}) {
/call DoKAAssist ${GrpMemNum}
/varset GetOut TRUE
}
/return ${GetOut}
Sub DoAutoCleric(int GrpMemNum)
/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${ACName} assisting ${MA}
/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
/bct ${Group.Member[${GrpMemNum}]} //mac ${ACName}
/return
Sub DoAFNuke2(int GrpMemNum)
| TODO AFNuke85/100
/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to AFNuke2 assisting ${MA}
/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
/bct ${Group.Member[${GrpMemNum}]} //mac afnuke2
/return
Sub DoKAAssist(int GrpMemNum)
/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} assisting ${MA}
/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName}
/return
Sub DoKAPullerTank(int GrpMemNum)
/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} PullerTank assisting ${MA}
/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName} pullertank
/return
Sub DoKATank(int GrpMemNum)
/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} Tank assisting ${MA}
/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName} tank
/return
Sub DoKAPuller(int GrpMemNum)
/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} Puller assisting ${MA}
/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName} puller
/return