• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
Resource icon

Release Maskoi's Ultimate Monk Trainer 1.5

No permission to download

Maskoi

old and salty
Joined
Sep 28, 2005
RedCents
82,796¢
Maskoi's Ultimate Monk Trainer v 1.5 updated 1/12/2017

I wrote Monk Trainer to specifically train monk's special abilities. The macro recognizes the monks level and skills levels and will only train those abilities it finds. It only concentrates on special attacks Kick, Mend, Intimidation, Round Kick, Tiger Claw, Feign Death, Eagle Strike, Dragon Punch (Tail Rake), Flying Kick.

Inspired by an earlier thread discussing raising melee skills by dueling pet classes.

The macro requires Mq2MoveUtils and disables MQ2melee so it can train all skills in a specific order

How to use with pet class or someone else's merc and /duel:
1. Make sure you have hot key for all of your abilities somewhere.
2. Group with a Cleric merc and a pet class or a toon with their merc about the same level so it is light blue/blue to you.
3. Find a secluded spot in a zone where no one will bug you not PoK, GL or GH.
4. Target each other and /d for duel.
5. Target the pet or merc and type /mac monktrainer.
6. Have the pet or merc attack if you want to raise defensive skills.

How to use with your own Cleric Merc in Arena:

WARNING The Arena is a public PVP zone. You can easily be seen or worse killed by other players while AFK.
Make sure you have hot key for all of your abilities somewhere.
1. Goto the Arena Zone with your cleric merc. Stone is in neutral area of PoK
2. Enter the Arena
3. Set your merc to Efficient or Balanced
4. Target your merc
5. Type /mac monktrainer

Version 1.3 10/10/2012
~Fixed error that stalled macro waiting for cleric merc to med while dueling a pet or merc.

Version 1.2 10/08/2012
~Added Cleric Mercenary in Area support
~Added low mana check and pause for merc so monk doesn't kill cleric.

Version 1.1 10/07/2012
~Fixed macro stalling while waiting for skills to refresh.
~Added fix for macro to display Tail Rake for Iksar monks instead of Dragon Punch.
 
Last edited by a moderator:
Re: Maskoi's Ultimate Monk Trainer

Here is one of my first macros written to train my monk. This macro is entended to be used while actually playing your toon. It is NOT an AFK trainer.
It has been revised many times and includes basic skills for most melee classes. It is far simpler them Maskoi's macros and may be helpful to other macro writers with limited experience.

Rich (BB code):
|**
CombatHelper.mac by Hoosierbilly  

Requires: MQ2MoveUtils

Purpose: To automatically use basic combat skills, ie: kick, taunt, bash, backstab...
	Will attack the mob when it is within range, use basic conbat skills,
	give pop-up warning if health falls below 20%.	

	It will also follow the mob when it tries to run away due to low health.

	Added a Routine for handling adds during combat.

Useage: Pull mob to camp and activate macro when ready to attack.

Recommendation: Create a social with the command < /mac combathelper>
	Make the social a hotbutton to use when ready to attack.
	Would also make an /end hotbutton, just in case.

Note: The combat abilities must be selected on your abilities "ctrl A" or combat "ctrl C" page for this to work.

My code examples:

/if (${Me.AltAbilityReady[spellName]}) /alt activate ${Me.AltAbility[spellName].ID}

/if (${Me.CombatAbilityReady[DiscplineName]}) /disc DiscplineName

/if ({Me.PctHPs}<50 && ${FindItem[=Item Name].ID} && ${FindItem[Item Name].Timer}==0 ) /casting "Item Name"|item -targetid|${Me.ID}

/casting "Item Name"|item -targetid|${Me.ID}
**|

#Event killcount "#*#has been slain#*#"
#Event killcount "#*#you have slain#*#"

Sub Main

	/declare killcount int outer 0

	/if (!${Target.ID}) /call endmacro
	/if (${Target.Type.Equal[Corpse]}) /call endmacro
	/if (${Target.Type.Equal[PC]}) /call endmacro
	/if (${Target.Type.Equal[Mercenary]}) /call endmacro

	/if (${Target.Distance}>45) /call wait

	/face nolook
	/if (!${Me.Combat}) /attack on
	/stick loose 80%

	/if (${Me.Class.ID}==1 && ${Me.PctEndurance}>96) {

		/if (${Me.Level}>79) /disc Sneer
		/if (${Me.Level}>74) /disc Scowl
		/if (${Me.Level}>62) /disc Incite
		/if (${Me.Level}>55) /disc Berate
		/if (${Me.Level}>51) /disc Bellow
		/if (${Me.Level}>19) /disc Provoke
		/if (${Me.AbilityReady[taunt]}) /doability taunt
	}


:Loop

	/if (${Me.Class.ID}==1) /call Warrior
	/if (${Me.Class.ID}==2) /call Cleric
	/if (${Me.Class.ID}==3) /call Pally
	/if (${Me.Class.ID}==4) /Call Ranger
	/if (${Me.Class.ID}==5) /call Shadow

	/if (${Me.Class.ID}==7) /call Monk
|	/if (${Me.Class.ID}==8) /call Bard  (has no low level attack abilities)	
	/if (${Me.Class.ID}==9) /call Rogue

	/if (${Me.Class.ID}==15) /call Beasty
	/if (${Me.Class.ID}==16) /call Zerker

	/if (!${Me.Combat} && ${Me.CombatState.Equal[combat]} && ${Target.Distance}<30) /attack on

	/doevents

	/if (!${Target.ID}) /call checkadds
	/if (${Target.Type.Equal[corpse]}) /call checkadds

	/if (${Target.Type.Equal[PC]}) /call delay
	/if (${Target.Type.Equal[Mercenary]}) /call delay

	/if (${Target.Distance}>35 && !${Stick.Active}) /call pause

	/if (${Me.AbilityReady[taunt]} && ${Target.Distance}<25) /doability taunt
	/if (${Me.AbilityReady[Frenzy]}) /doability Frenzy
	/if (${Me.AbilityReady[Kick]}) /doability Kick

	/if (${Me.PctHPs}<=20) /popup You are near dead - TAKE ACTION NOW!

	/if (${Me.CombatAbilityReady[Fourth Wind Rk. II]} && ${Me.PctEndurance}<75) /disc Fourth Wind Rk. II
	/if (${Me.CombatAbilityReady[Fourth Wind]} && ${Me.PctEndurance}<75) /disc Fourth Wind
	/if (${Me.CombatAbilityReady[Third Wind Rk. II]} && ${Me.PctEndurance}<75) /disc Third Wind Rk. II
	/if (${Me.CombatAbilityReady[Third Wind]} && ${Me.PctEndurance}<75) /disc Third Wind

/goto :Loop
/return

sub event_killcount

	/varcalc killcount ${killcount}+1
/return

|||||||||||||||||||||
| Class subroutines |
|||||||||||||||||||||

Sub Warrior

	/if (${Me.AltAbilityReady[Call of Challenge]} && ${Target.PctHPs}<21 && ${Me.XTarget}<2) {
	/alt activate ${Me.AltAbility[Call of Challenge].ID}
	}

	/if (${Me.AltAbilityReady[Knee Strike]}) /alt activate ${Me.AltAbility[Knee Strike].ID}
	/if (${Me.AltAbilityReady[Gut Punch]}) /alt activate ${Me.AltAbility[Gut Punch].ID}
	/delay 3

	/if (${Me.AbilityReady[taunt]} && ${Target.Distance}<25) /doability taunt
	/if (${Me.AbilityReady[Kick]} && ${Target.Distance}<25) /doability Kick
	/if (${Me.AbilityReady[Bash]} && ${Target.Distance}<25) /doability Bash

/return

Sub Cleric
	/if (${Me.AbilityReady[Bash]} && ${Target.Distance}<25) /doability Bash
/return

Sub Pally

	/if (${Me.AbilityReady[taunt]} && ${Target.Distance}<25) /doability taunt
	/if (${Me.AbilityReady[Bash]} && ${Target.Distance}<25) /doability Bash
/return


Sub Ranger

	/if (${Me.AbilityReady[taunt]} && ${Target.Distance}<25) /doability taunt
	/if (${Me.AbilityReady[Kick]} && ${Target.Distance}<25) /doability Kick
/return


Sub Shadow

	/if (${Me.AbilityReady[taunt]} && ${Target.Distance}<25) /doability taunt
	/if (${Me.AbilityReady[Bash]} && ${Target.Distance}<25) /doability Bash
/return


Sub Monk

	/if (${Target.PctHPs}>90) {
	/squelch /casting 120248
	}

	/if (${Me.Level}<55 && ${Me.AbilityReady[Mend]} && ${Me.Skill[Mend]}<${Me.SkillCap[mend]}) {
	/doability Mend
	}

	/if (${Me.PctHPs}<50 && ${Me.AbilityReady[Mend]}) /doability mend

	/if (${Me.PctHPs}<=35 && ${Me.CombatAbilityReady[Delay Death Rk. II]} && ${Me.PctEndurance}>10) {
	/disc Delay Death Rk. II
	}  else {
	/if (${Me.PctHPs}<=35 && ${Me.CombatAbilityReady[Delay Death]} && ${Me.PctEndurance}>10) {
	/disc Delay Death
	} 
	}

	/if (${Me.PctHPs}<=20) /call monkend

	/if (${Me.CombatAbilityReady[Calanin's Synergy]} && ${Me.PctEndurance}>24) {
	/disc Calanin's Synergy
	} else {
	/if (${Me.CombatAbilityReady[Clawstriker's Flurry]} && ${Me.PctEndurance}>24) {
	/disc Clawstriker's Flurry
	} else {
	/if (${Me.CombatAbilityReady[Leopard Claw]} && ${Me.PctEndurance}>24) {
	/disc Leopard Claw
	}
	}
	}

	/if (${Target.PctHPs}<10) {
	/if (${Me.CombatAbilityReady[Calanin's Synergy]}) {
	/disc Calanin's Synergy
	} else {
	/if (${Me.CombatAbilityReady[Clawstriker's Flurry]}) {
	/disc Clawstriker's Flurry
	} else {
	/if (${Me.CombatAbilityReady[Leopard Claw]}) /disc Leopard Claw
	}
	}
	}

	/if (${Me.AltAbilityReady[Crippling Strike]} && ${Target.PctHPs}<21 && ${Me.XTarget}<2) {
	/alt activate ${Me.AltAbility[Crippling Strike].ID}
	}

	/if (${Me.Skill[Flying Kick]}<${Me.SkillCap[Flying Kick]}) {
	/doability "Flying Kick"
	/return
	}

	/if (${Me.Skill[Dragon Punch]}<${Me.SkillCap[Dragon Punch]}) {
	/doability "Dragon Punch"
	/return
	}

	/if (${Me.Skill[Eagle Strike]}<${Me.SkillCap[Eagle Strike]}) {
	/doability "Eagle Strike"
	/return
	}

	/if (${Me.Skill[Tiger Claw]}<${Me.SkillCap[Tiger Claw]}) {
	/doability "Tiger Claw"
	/return
	}

	/if (${Me.Skill[Round Kick]}<${Me.SkillCap[Round Kick]}) {
	/doability "Round Kick"
	/return
	}

	/if (${Me.Level}>30 && ${Me.AbilityReady[Flying Kick]}) /doability "Flying Kick"
	/if (${Me.Level}>25 && ${Me.AbilityReady[Dragon Punch]}) /doability "Dragon Punch"
	/if (${Me.Level}>20 && ${Me.AbilityReady[Eagle Strike]}) /doability "Eagle Strike"
	/if (${Me.Level}>10 && ${Me.AbilityReady[Tiger Claw]}) /doability "Tiger Claw"
	/if (${Me.Level}>5 && ${Me.AbilityReady[Round Kick]}) /doability "Round Kick"
	/if (${Me.AbilityReady[Kick]}) /doability Kick

/return

Sub Bard

/return

Sub Rogue

	/if (${Me.AbilityReady[backstab]}) /doability backstab
/return

Sub Beasty

	/if (${Me.AbilityReady[Kick]} && ${Target.Distance}<25) /doability Kick
/return

Sub Zerker

	/if (${Me.AbilityReady[Frenzy]} && ${Target.Distance}<25) /doability Frenzy
	/if (${Me.AbilityReady[Kick]} && ${Target.Distance}<25) /doability Kick
/return

|||||||||||||||||||||||||||||||
| Delay and Movement Routines |
|||||||||||||||||||||||||||||||

Sub delay

	/popup Macro delay until you have valid target.
	/attack off
	/stick off
:delay
	/delay 5
	/if (${Target.Type.Equal[PC]}) /goto :delay
	/if (${Target.Type.Equal[Mercenary]}) /goto :delay
/popup
	/face nolook
	/if (!${Me.Combat}) /attack on
	/stick loose 80%
/return

Sub pause

	/popup Marco is paused! You are ${Target.Distance} of a max 35 units away.
	/attack off
:pause
	/delay 5
	/if (${Target.Distance}>35) /goto :pause
/popup
	/face nolook
	/if (!${Me.Combat}) /attack on
	/stick loose 80%
/return

Sub wait
	/popup Marco is waiting, until target is closer.
:wait
	/delay 5
	/if (${Target.Distance}>45) /goto :wait
/popup
/return

||||||||||||||||||||||||||
| End of Combat routines |
||||||||||||||||||||||||||

Sub checkadds

	/declare slot int local 1
	/declare totalmobs int local 1

	/if (${Select[${Me.Class.ID},2,6,10,11,12,13,14]}>=1) /call endmacro

	/varset totalmobs ${Me.XTarget}
	/if (${totalmobs}<1) /varset totalmobs int local1
	/delay 2

	/if (${Me.CombatState.Equal[combat]}) {
	/for slot 1 to ${totalmobs}
	/target id ${Me.XTarget[${slot}].ID}
	/delay 2
	/if (${Target.Distance}>45) /next slot
	} else /call endmacro
	
	/if (${Target.Distance}<45) {
	/face nolook
	/delay 2
	/if (!${Me.Combat}) /attack on
	/stick loose 80%
	} else /call pause
/return

Sub monkend

	/if (${Me.AltAbilityReady[imitate death]}) {
	/alt activate ${Me.AltAbility[imitate death].ID}
	/echo combat ended - imitate death
	} else {
	/doability "feign death"
	/echo combat ended - feign death
	}
	/stick off
	/squelch /endmac

Sub endmacro
	/if (${Me.Level}<51) {
	/echo Combat terminated with ${killcount} kill(s) and ${Me.PctExp}% total regular XP.
	} else {
	/echo Combat terminated with ${killcount} kill(s) and ${Me.PctExp}% total regular XP.
	/echo  You have ${Me.PctAAExp} total alternate XP and ${Me.AAPoints} AA points to spend.
	}
	/if (${Me.Class.ID}==8) {
	/bandolier activate run
	/twist 8
	}
	/if (${Me.Combat}) /attack off
	/stick off
	/squelch /endmacro
 
Re: Maskoi's Ultimate Monk Trainer

Maskoi, any chance you could get this to work while attacking a merc while standing in an arena ? Great job btw!
 
Re: Maskoi's Ultimate Monk Trainer

Try changing line 49 from

Rich (BB code):
/target id ${Spawn[pet].ID}
Rich (BB code):
/target id ${Spawn[mercenary].ID}
 
Re: Maskoi's Ultimate Monk Trainer

Wow I spent 20 minutes reading line by line for that simple line of code. Silly me. Thanks! I did try that, and it didn't work. Gave a few other commands a try, but I'm new to this so maybe I'm just doing it wrong.
 
Re: Maskoi's Ultimate Monk Trainer

Monk skill ups might not work with mercenaries.
 
Re: Maskoi's Ultimate Monk Trainer

I'm probably just doing it wrong, can't even get mend or FD to work. I also can manually get the skills ups, or if I set melee back to 1. I dunno. Maybe I setup the hotkeys wrong.
 
Re: Maskoi's Ultimate Monk Trainer

Is this macro still working? Tried it this morning. Put all the abilities on hotbar, started a duel, targeted pet and started macro. Monk will hit kick once then maybe hit mend or FD, then just stand there and do nothing.
 
Re: Maskoi's Ultimate Monk Trainer

I have not tested it in a while. Its on the list and I will test it this weekend. Will fix it if borked.
 
Re: Maskoi's Ultimate Monk Trainer

Monktrainer doesnt seem to use skills when I try..

combathelper is working so far, atleast on flying kick :-)
 
Re: Maskoi's Ultimate Monk Trainer

What exactly is the problem. Doesn't work is a little vague lol. Are you dueling someones pet?
 
Re: Maskoi's Ultimate Monk Trainer

While dueling a mage's pet, /mac monktrainer. Training You > (List of skills, current/cap) > TRAINING => Kick <= 30/400

It kicks once, then announces one or two ability skillups, then goes blank. None of the other abilities are being trained, nor does kick cycle. There is no indication of the macro ending, except absence of anything except auto attack.

I also get a message Monktrainer@29 (Main): /melee plugin=0 Not sure if that has anything to do with anything. Just trying to give you all the information
 
Re: Maskoi's Ultimate Monk Trainer

I'll look at this tomorrow.
 
Re: Maskoi's Ultimate Monk Trainer

Just an FYI i would probably do this in an arena against a merc healer.
 
Re: Maskoi's Ultimate Monk Trainer v 1.1 updated 10/08/2012

Version 1.1 uploaded
~Fixed macro stalling while waiting for dkills to refresh.
~Added fix for macro to display Tail Rake for Iksar monks instead of Dragon Punch.
 
Re: Maskoi's Ultimate Monk Trainer

Version 1.2 uploaded
~Added Cleric Mercenary in Area support
~Added low mana check and pause for merc so monk doesn't kill cleric.
 
Re: Maskoi's Ultimate Monk Trainer v 1.2 updated 10/08/2012

Working great! Thanks! Only 2 things I have noticed since the update:

1) When dueling a pet class with my merc out, I get the message "Waiting for my stupid merc to med to 90 percent mana", I get this message whether the merc is full mana or not, and it will not attack or use skills. So dueling pet classes is ruled out unless I let the pet die or manually heal him. Mercenary in an arena still works fine, though.

2) It will not use Mend for skillups. Another minor issue I can live without, but it would be nice to max mend.

Thanks again for updating this. It has been a big help.
 
Re: Maskoi's Ultimate Monk Trainer v 1.2 updated 10/08/2012

the merc mana check shouldn't be happening unless the merc is in your group and out of mana. I will check it out tonight. Also make sure you have mend on your hot key bar. My monk is almost max skills so hard to test on some stuff.
 
Re: Maskoi's Ultimate Monk Trainer v 1.2 updated 10/08/2012

Working great! Thanks! Only 2 things I have noticed since the update:

1) When dueling a pet class with my merc out, I get the message "Waiting for my stupid merc to med to 90 percent mana", I get this message whether the merc is full mana or not, and it will not attack or use skills. So dueling pet classes is ruled out unless I let the pet die or manually heal him. Mercenary in an arena still works fine, though.

2) It will not use Mend for skillups. Another minor issue I can live without, but it would be nice to max mend.

Thanks again for updating this. It has been a big help.

#1 Fixed
Monk Trainer v 1.3 updated 10/10/2012
~Fixed error that stalled macro waiting for cleric merc to med while dueling a pet or merc.

#2
Do you have mend hot key? Mend is like on a six minute time are you just aren't missing it?
 
Re: Maskoi's Ultimate Monk Trainer v 1.2 updated 10/08/2012

Monk Trainer v 1.3 updated 10/10/2012
~Fixed error that stalled macro waiting for cleric merc to med while dueling a pet or merc.
 
Re: Maskoi's Ultimate Monk Trainer v 1.3 updated 10/10/2012

#2
Do you have mend hot key? Mend is like on a six minute time are you just aren't missing it?

Yes I have my Mend hotkey on my bar, and no, I dont think I am just missing it since I am able to press it myself. If the macro were using it, it would be constantly on cooldown and unusable.
 
Re: Maskoi's Ultimate Monk Trainer v 1.3 updated 10/10/2012

Question: why does the trainer spam /stick command?
 
Re: Maskoi's Ultimate Monk Trainer v 1.3 updated 10/10/2012

/plugin mq2log
/mlog on
file is in your mq2 folder > logs

post the spam please
 
Re: Maskoi's Ultimate Monk Trainer v 1.3 updated 10/10/2012

This wasn't working, I looked at the code, and had to comment out a line.

| /if (!${Me.AbilityReady[${SkillName[${i}].Arg[1,,]}]}) /goto :NextSkill

Essentially if the skill was ready, you skipped to the next skill. So I ignored that since it seemed really silly, and it works great. ;)
The only problem is I keep chasing the mage pet all around the open area I'm in lol, since Intimidation is *near maxed* and I've feared it 4 times in the first 5 minutes. I also added a 10th skill for Begging, I am not sure if I can get skillups while dueling a pet but I'll update. ;)

- - - Updated - - -

Confirmed, I had a begging skillup while using the monk trainer. I am not meleeing since that's all capped, just doing button attacks, intimidation, mend, begging
 
Re: Maskoi's Ultimate Monk Trainer v 1.5 updated 01/12/2017

Updated by TreeHuginDruid to handle healing classes as well as mercs.. for those playing on progression servers where mercs are not yet open.

Version is 1.5 now.

Also fixed major bug in Maskoi's code.... he was checking for CurrentMana and comparing to 10 / 90 % mana... for healer medding... instead of Pctmana !!!!!

(SLAP)

posting updated code.
 
Was training up my monk today and I saw this could use a bit of improvement. I added in some prioritization to skills with the same timer and threw in a couple more skills that low-level monks might need to train (sneak and disarm).

The skill to train selection is simply which one is currently lowest. That means that you get all your punch/kick skills up to snuff really fast and then grind out the last few points all together.
Rich (BB code):
| MonkTrainer.mac v.1.5 By Maskoi 10/10/2011 RedGuides.com
|                 v.1.6 5/11/2018
|
| Updated by dannuic to prioritize skills on the same timer, and added some new skills for low level monks.
| Updated by TreeHuginDruid to handle regular healing classes instead of mercs for progression servers.
|
| Requires MQ2MoveUtils
| 
| How to use with pet class or someone else's merc and /duel:
| 1. Make sure you have hot key for all of your abilities somewhere.
| 2. Group with a Cleric merc and a pet class or a toon with their merc about the same level so it is light blue/blue to you.
| 3. Find a secluded spot in a zone where no one will bug you not PoK, GL or GH.
| 4. Target each other and /d for duel.
| 5. Target the pet or merc and type /mac monktrainer. 
| 6. Type /mac monktrainer
| 7. Have the pet attack of you want to raise defensive skills.
|
| How to use with Cleric Merc in Arena.
| WARNING The Arena is a public zone. You can easily be seen or worse killed by other players while AFK.
| Make sure you have hot key for all of your abilities somewhere.
| 1. Goto the Arena Zone with your cleric merc. Stone is in neutral area of PoK
| 2. Enter the Arena
| 3. Set your merc to Efficient or Balanced 
| 4. Target your merc
| 5. Type /mac monktrainer

#Event SkillUp "You have become better at #1#! (#2#)"

Sub Main
    /declare Ver                    string          outer   1.6
    /declare SkillName[5]           string          outer
    /declare KickSkill[3]           string          outer
    /declare PunchSkill[3]          string          outer
    /declare CurrentZone            int             outer   ${Zone.ID} 
    /declare MyTargetID             int             outer   ${Target.ID}
    /declare MyTargetName           string          outer   ${Target.CleanName}
    /declare HealerGrpNum           string          outer
    
    | Skill name,Level attained
    
    /varset SkillName[1]      Mend,1
    /varset SkillName[2]      Intimidation,1
    /varset SkillName[3]      Sneak,8
    /varset SkillName[4]      Feign Death,17
    /varset SkillName[5]      Disarm,27
    
    /varset KickSkill[1]      Kick,1
    /varset KickSkill[2]      Round Kick,5
    /varset KickSkill[3]      Flying Kick,30
    
    /varset PunchSkill[1]     Tiger Claw,10
    /varset PunchSkill[2]     Eagle Strike,20
    /varset PunchSkill[3]     Dragon Punch,25
    
    /if (${Bool[${Plugin[MQ2Melee]}]}) /melee plugin=0
    /if (!${Bool[${Plugin[MQ2Moveutils]}]}) /plugin mq2moveutils
    /delay 10
    /if (!${Bool[${Plugin[MQ2Moveutils]}]}) {
        /echo macro requires MQ2moveutils
        /end
    }
    
    /echo Redguides.com presents
    /echo Maskoi's Ultimate Monk Trainer v ${Ver}
    /delay 10
    /echo Traning You
    /call Init
    /delay 10

    /call HealerCheck
    
    :MainLoop
        /if (${HealerGrpNum.NotEqual[NULL]}) /call HealerMed
        /if (${HealerGrpNum.Equal[NULL]}) /call MercMed
        /call DoSkills
        /call AreWeDone
        /doevents
    /goto :MainLoop

/return

Sub DoSkills
    /declare i int local
    /delay 10
    
    | Do kicks
    /declare LocalKick string local Kick
    /for i 1 to 3
        /doevents
        
        /if (${Me.Level} >= ${KickSkill[${i}].Arg[2,,]} && ${Me.Skill[${LocalKick}]} > ${Me.Skill[${KickSkill[${i}].Arg[1,,]}]}) {
	    /varset LocalKick ${KickSkill[${i}].Arg[1,,]}
	}
    /next i
    /call DoSkill "${LocalKick}"
    
    | Do punches
    /declare LocalPunch string local Tiger Claw
    /for i 1 to 3
        /doevents
        
        /if (${Me.Level} >= ${PunchSkill[${i}].Arg[2,,]} && ${Me.Skill[${LocalPunch}]} > ${Me.Skill[${PunchSkill[${i}].Arg[1,,]}]}) {
	    /varset LocalPunch ${PunchSkill[${i}].Arg[1,,]}
	}
    /next i
    /if (${Me.Level} >= 10) /call DoSkill "${LocalPunch}"
    
    | These all have independent timers, so just do them
    /for i 1 to 5
        /doevents
        
        /if (${Me.Level} >= ${SkillName[${i}].Arg[2,,]}) {
	    /call DoSkill "${SkillName[${i}].Arg[1,,]}"
	}
    /next i
/return

Sub DoSkill(LocalSkillName)
    /if (${Me.Skill[${LocalSkillName}]} == ${Me.SkillCap[${LocalSkillName}]}) /return
    
    /if (${LocalSkillName.Equal[Sneak]}) {
        /delay 5
        /doability "${LocalSkillName}" 
    }
	
    /target id ${MyTargetID}
    /stand
    /face fast
    
    /if (${Me.Skill[${LocalSkillName}]} < ${Me.SkillCap[${LocalSkillName}]}) {
        /if (!${Me.AbilityReady[${LocalSkillName}]}) /return
	/delay 5
	/doability "${LocalSkillName}"
	/if (${Me.Race.Name.Equal[iksar]} && ${LocalSkillName.Equal[Dragon Punch]}) {
            /echo TRAINING => Tail Rake <= ${Me.Skill[${LocalSkillName}]}/${Me.SkillCap[${LocalSkillName}]}
        } else {
            /echo TRAINING => ${LocalSkillName} <= ${Me.Skill[${LocalSkillName}]}/${Me.SkillCap[${LocalSkillName}]}
        }
    }
/return

Sub Init
    /echo Skill Level/Skill Cap
    /declare i int local
    
    /for i 1 to 3
        /echo ${KickSkill[${i}].Arg[1,,]}: ${Me.Skill[${KickSkill[${i}].Arg[1,,]}]}/${Me.SkillCap[${KickSkill[${i}].Arg[1,,]}]}
    /next i
    
    /for i 1 to 3
        /if (${Me.Race.Name.Equal[iksar]} && ${PunchSkill[${i}].Arg[1,,].Equal[Dragon Punch]}) {
            /echo Tail Rake: ${Me.Skill[${PunchSkill[${i}].Arg[1,,]}]}/${Me.SkillCap[${PunchSkill[${i}].Arg[1,,]}]}
        } else {
            /echo ${PunchSkill[${i}].Arg[1,,]}: ${Me.Skill[${PunchSkill[${i}].Arg[1,,]}]}/${Me.SkillCap[${PunchSkill[${i}].Arg[1,,]}]}
        }
    /next i
    
    /for i 1 to 5
        /echo ${SkillName[${i}].Arg[1,,]}: ${Me.Skill[${SkillName[${i}].Arg[1,,]}]}/${Me.SkillCap[${SkillName[${i}].Arg[1,,]}]}
    /next i
/return
    
Sub Event_SkillUp(S0,S1,S2)
    /echo >> Your ${S1} skill is now ${S2}. <<
/return

Sub AreWeDone
    /declare i int local
    /declare j int local 0
    
    /for i 1 to 3
        /if (${Me.Skill[${KickSkill[${i}].Arg[1,,]}]} == ${Me.SkillCap[${KickSkill[${i}].Arg[1,,]}]}) /varcalc j ${j}+1
    /next i
    
    /for i 1 to 3
        /if (${Me.Skill[${PunchSkill[${i}].Arg[1,,]}]} == ${Me.SkillCap[${PunchSkill[${i}].Arg[1,,]}]}) /varcalc j ${j}+1
    /next i
    
    /for i 1 to 5
        /if (${Me.Skill[${SkillName[${i}].Arg[1,,]}]} == ${Me.SkillCap[${SkillName[${i}].Arg[1,,]}]}) /varcalc j ${j}+1
    /next i
    
    /if (${j} == 11) {
        /echo All skills are currently maxed. Ending macro.
        /attack off
        /stick off
        /end
    }
/return

Sub MercMed
    /if (${Spawn[cleric mercenary ${MyTargetName}].ID} && ${Me.Mercenary.Equal[Active]} &&  ${Spawn[cleric mercenary ${MyTargetName}].PctMana} <=10) {
        /echo Waitng for my stupid merc to med to 90 mana
        :WaitMercMed
            /delay 10
        /if (${Spawn[cleric mercenary ${MyTargetName}].PctMana} < 90) /goto :WaitMercMed
        /echo Stupid merc finally at 90% mana contimuing.
    }
/return
 
Sub HealerCheck
    /declare i int local
    /for i 0 to 5
         /if (${Select[${Group.Member[${i}].Class.ShortName},CLR,DRU,SHM]}) /varset HealerGrpNum ${i}
    /next i
/return

Sub HealerMed
    /if (${Group.Member[${HealerGrpNum}].ID} && ${Group.Member[${HealerGrpNum}].PctMana} <=10) {
        /echo Waitng for my stupid healer to med to 90 mana
        :WaitHealercMed
            /delay 10
        /if (${Group.Member[${HealerGrpNum}].PctMana} < 95) /goto :WaitHealercMed
        /echo Stupid merc finally at 90% mana contimuing.
    }
/return
 
Disarm only works if you are fighting something with a weapon. So really not a skill this macro is good at leveling.

Did it work at all with a merc?
 
I thought you could practice disarming while fighting a pet since a pet doesn't have an inventory it would just reequip the weapon?
 
Just want to say that this WORKS!!! So many years later... lovin' it. Shaman (60) grouped with monk (59) duel, monk attacks shaman pet which is level 39. Rgmercs with shaman as MA doesn't blink and keeps monk alive. Thank you!
 
maskoi isn't around and you don't need to create several new threads, the resource has one.
 
Release Maskoi's Ultimate Monk Trainer

Users who are viewing this thread

Back
Top
Cart