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
	
				
