Dranik Loyalist Faction Macro

RageATM0998

Lifetimer
Joined
Dec 7, 2006
Messages
440
Reaction score
0
Points
0
I've been working on this macro lately to automate grinding up Dranik Loyalist faction of OoW (Anguish) armor turn in's. You have to edit the variables to fit your character and how you want it to run.

The actual functioning of the macro is pretty basic. It can do any combination of auto attack, a combat disc (damage disc like Wheel of Fists), a combat ability (like Flying Kick), and a spell (nukes work best).

This does use WARP, so use it at your own risk. From my experiences, Dranik Scar is almost always empty. I added in PC and GM checks, with options that can be edited in the variable section.

I was able to get from KoS to ally in about 15-20 hours of running this macro over two days on my monk. It does a pretty good job afk, but occasionally gets stuck on geometry requiring you to manually move around. Also, I recommend using the envirofall docrack, because rarely it warps to a mob that falls under the world.

Code:
#include spell_routines.inc

Sub Main

/declare doMelee	int outer 1
/declare doNuke		int outer 0
/declare doDisc		int outer 1
/declare doCAbility	int outer 1

/declare nameDisc	outer Wheel of Fists
/declare nameCAbility	outer Flying Kick
/declare nameNuke	outer Bite of the Ukun Rk. II

/declare checkGM	int outer 1
/declare checkPC	int outer 1
/declare maxPC		int outer 1

:loop
/if (!(${Zone.ID}==301 || ${Zone.ID}==302)) /endmac
/call safeChecks

/hidecorpse all
/squelch /target npc "an ukun"
/squelch /target npc "a kyv"
/squelch /target npc "a noc"

:attack
/if (${Target.ID}) {
	/call safeChecks
	/if (${Target.Distance} > 100) /warp b t
	/stick 5
	/face
	/if (${doMelee} && ${Target.Distance} < 20) {
		/attack on
		/if (${doCAbility} && ${Me.AbilityReady[${nameCAbility}]}) {
			/delay 1s
			/doability "${nameCAbility}"
		}
		/if (${doDisc} && ${Me.CombatAbilityReady[${nameDisc}]} && ${Me.PctEndurance} > 15) {
			/delay 1s
			/disc ${nameDisc}
		}
	}
	/if (${doNuke} && ${Target.LineOfSight} && ${Me.SpellReady[${nameNuke}]}) {
		/call cast "${nameNuke}"
	}
}
/if (!${Target.Type.Equal[NPC]}) /keypress esc
/if (${Target.ID} || ${Me.CombatState.Equal[COMBAT]}) /goto :attack
/goto :loop


Sub safeChecks
   /if (${checkGM} && ${Spawn[gm].ID}) /call GM
   /if (${checkPC} && ${SpawnCount[pc]} > ${maxPC}) /call PC
/return

Sub GM
   /gate
   /endmac
/return

Sub PC
   /beep
   /who
   /echo Another player in zone!
   /echo Zoning to Bloodfields for 5 minutes
   /zone bloodfields
   /delay 5m
   /zone dranikssar
/return


Also, for anybody interested, here are some small tweaks that you can add in specifically for a monk. The Fists of Wu code could be used for other classes with similar discs, like rogue's Theif's Eyes.


Add this into the variable declares
Code:
/declare nameEndurReg	outer Third Wind Rk. II

And then right after this line:
Code:
:attack

Add in:
Code:
/if (!${Me.Song[Fists of Wu].ID} && ${Me.CombatAbilityReady["Fists of Wu"]} && ${Me.PctEndurance} > 10) {
     /delay 1s
     /disc Fists of Wu
}
/if (${Me.PctEndurance} < 85 && ${Me.CombatAbilityReady[${nameEndurReg}]}) {
	/delay 1s
	/disc ${nameEndurReg}
}
 
now it is pretty simple to just kill trash in anguish no ? you can request instance with any full group personaly i use toon in same account just add to group qith second char ;
 
Yeah, it is pretty easy. This was something I made that I could run afk while I was playing my main char. I ran it in the background while I raided on my main. It would have taken much longer to do killing in Anguish.

I know this is kind of a niche macro, and not one that people will use all the time. However, I've found myself in the situation of having Anguish BP molds on multiple alts who don't have the faction required to turn them in. That was the problem that I was trying to solve with this macro. There are many places that you can kill, but I found Dranik Scar to be much faster, because of how few HP the mobs have.
 
Good job, it's nice to see some more making macros for everyone!
 
I wonder if it would be easier to just shroud down to a 75 rogue or berserker over using a caster. Hrm...
 
I believe shroud faction does not stay with you when you unshroud.

I once did a whole lot of faction turn-ins while in illusion. Got to kindly but when the illusion turned off, back to KOS.
 
Damn, well thank you for that warning rofl. I was just about to try it.
 
Alright, I tweaked this macro a little bit for use by casters. Basically added a minMana setting that if you drop below that % of mana, it will /succor (and /fade if you are in combat) and med to full.

I haven't had time to make sure it works as I have class in an hour but I think it should be fine, let me know if anyone has problems.

Code:
#include spell_routines.inc

Sub Main

/declare doMelee	int outer 1
/declare doNuke		int outer 1
/declare doDisc		int outer 0
/declare doCAbility	int outer 0

/declare nameDisc	outer Wheel of Fists
/declare nameCAbility	outer Flying Kick
/declare nameNuke	outer Touch of Mujaki

/declare checkGM	int outer 1
/declare checkPC	int outer 1
/declare maxPC		int outer 1
/declare minMana        int outer 20

:loop
/if (!(${Zone.ID}==301 || ${Zone.ID}==302)) /endmac
/call safeChecks
/call manaCheck
	
/hidecorpse all

/squelch /target npc "an ukun"
/squelch /target npc "a kyv"
/squelch /target npc "a noc"

:attack
/if (${Target.ID}) {
	/call safeChecks
	/if (${Target.Distance} > 100) /warp b t
	/stick 5
	/face
	/if (${doMelee} && ${Target.Distance} < 20) {
		/attack on
		/if (${doCAbility} && ${Me.AbilityReady[${nameCAbility}]}) {
			/delay 1s
			/doability "${nameCAbility}"
		}
		/if (${doDisc} && ${Me.CombatAbilityReady[${nameDisc}]} && ${Me.PctEndurance} > 15) {
			/delay 1s
			/disc ${nameDisc}
		}
	}
	/if (${doNuke} && ${Target.LineOfSight} && ${Me.SpellReady[${nameNuke}]}) {
		/call cast "${nameNuke}"
	}
}
/if (!${Target.Type.Equal[NPC]}) /keypress esc
/if (${Target.ID} || ${Me.CombatState.Equal[COMBAT]}) /goto :attack
/goto :loop


Sub safeChecks
   /if (${checkGM} && ${Spawn[gm].ID}) /call GM
   /if (${checkPC} && ${SpawnCount[pc]} > ${maxPC}) /call PC
/return

Sub manaCheck
	:medloop
	/if (${Me.PctMana} <= ${minMana}) {
		/warp s
		/if (${Me.CombatState.Equal[Combat]}) /fade
		/delay 1s
		/sit
		/delay 150s
		/goto :medloop
	}
/return

Sub GM
   /gate
   /endmac
/return

Sub PC
   /beep
   /who
   /echo Another player in zone!
   /echo Zoning to Bloodfields for 5 minutes
   /zone bloodfields
   /delay 5m
   /zone dranikssar
/return
 
Ahh good shit Fraggy. I'll admit that the caster part was mostly a hindsight. I had made the macro for my monk, and when I thought about how useful it had been to me, I decided I'd post it. But I didn't want to post a mac that only really worked for monks, so I tried to clean it up a bit and make it at least functional for any class.

You can see I had some hard coded endur checks for the monk abilities, but didn't even think about making a check to med mana for the casters.

Also, for any casters running this, I would still suggest setting doMelee to 1. The mobs in Dranik Scar have so few hp that even your melee damage can help speed things up between casts.
 
any idea why it dosent zone me back into Dranik? it says bad short zone name i belive it was saying.
 
Well just from a quick look at the mac i see

"/zone dranikssar"

instead of /zone draniksscar
 
Wow lol. I always wondered what the deal was with that part of the mac. Seemed I never could get it to go back to dranik!