Anyone working on Beastlord auto mac?

Have a macro idea but not sure where to start? Ask here.

Moderator: MacroQuest Developers

screwball
orc pawn
orc pawn
Posts: 16
Joined: Wed Apr 21, 2004 10:24 pm

Anyone working on Beastlord auto mac?

Post by screwball » Thu May 13, 2004 3:51 pm

Would be nice to see a Beastlord macro like the auto-rogue one or maybe convert rogue mac to beastlord style maybe. Anyone know of any out there? There used to be one before all the structure changes took place.

Thanks.

Oid
a snow griffon
a snow griffon
Posts: 416
Joined: Thu Oct 17, 2002 3:26 am
Contact:

Post by Oid » Thu May 13, 2004 3:56 pm

Just convert the rogue one, not to tough.
Smokey the Lax says only you can prevent reproduction.

screwball
orc pawn
orc pawn
Posts: 16
Joined: Wed Apr 21, 2004 10:24 pm

Post by screwball » Thu May 13, 2004 4:02 pm

Bump to shorten this post some. )
Last edited by screwball on Tue May 18, 2004 6:07 am, edited 2 times in total.

screwball
orc pawn
orc pawn
Posts: 16
Joined: Wed Apr 21, 2004 10:24 pm

Post by screwball » Thu May 13, 2004 4:09 pm

I'll try and convert the rogue one, but I'm just not as skilled as some on doing that. Might could have friend help me too.

kasodo
a lesser mummy
a lesser mummy
Posts: 64
Joined: Fri Feb 13, 2004 9:41 am

guys

Post by kasodo » Thu May 13, 2004 4:14 pm

Please, Pretty Please use [ code] [ / code] minus the spaces for your code
<Oid> You know whats sad
<Oid> here soon, lax will log in
<Oid> and go "You fucking idiots!"
* Lax has joined #macroquest
* ChanServ sets mode: +o Lax
...
<Lax> you fucking idiots!

screwball
orc pawn
orc pawn
Posts: 16
Joined: Wed Apr 21, 2004 10:24 pm

Post by screwball » Tue May 18, 2004 2:31 am

Well, I been working on this for a bit but I'm not that great with this coding yet. There is probably a much easier or better way to convert this and make it alot better and cleaner but hey, I'm trying. I took the AutoRogue macro and converted it to this Beastlord macro, somewhat.

I still don't have the alt activate # for some of the AA abilities yet so I just use my hotkeys and added lines like /keypress 1 and such. If anyone knows these # and wants to make changes or improvements to this macro, then by all means please do. /wink

Code: Select all


|AutoBeastlord 5-18-2004 
|---------------------------------------------------------------------- 
| By Screwball. 
| Original AutoRogue by Jay. 
| Credits to GrimJack for the getbehind and moveto logic from GenBot. 
| 
| Usage: /macro bst.mac Assist HpPct AnchorBit Follow 
| 
| Examples: 
|     Assist tank at 95% 
|       /macro bst.mac Happytank 95 0    (or leave the zero off) 
| 
|     Assist tank at 95%, set anchor at current loc 
|       /macro bst.mac Happytank 95 1 
| 
|     Same as above but moveto/follow a target between fights 
|       /macro bst.mac Happytank 95 2 Stationarycleric 
| 
| DON'T FORGET TO VIEW/MODIFY YOUR CUSTOM.INC FILE!!! 
| 
|
#turbo 40 

#Event Enraged "#*#has become ENRAGED#*#" 
#Event Offrage "#*#is no longer enraged#*#" 
#Event Slainby "#*#You have been slain by#*#" 
#Event Zonechange "#*#You have entered#*#"
#Event FEROC "#*#The ferocity fades.#*#"
#Event SV "#*#Your spiritual vigor fades.#*#"
#Event DOMIN "#*#The dominion fades.#*#"
#Event IOS "#*#Your power fades.#*#"
#Event STR "#*#Your Furious Strength fades.#*#"
#Event HASTE "#*#Your speed returns to normal.#*#"
#Event TALIS "#*#Your hit points fade.#*#"
#Event FREN "#*#Your frenzy fades.#*#"
#Event STA "#*#Your stamina fades.#*#"
#Event DEX "#*#Your dexterity fades.#*#"
#Event SLAINBY "#*#You have been slain by#*# "
#Event Exp "#*#You gain party exp#*#"

#include spellcast.inc 

Sub Main    
    /declare bAttackTarget bool outer 
    /declare AnchorX float outer 
    /declare AnchorY float outer 
    /declare fXLoc float outer 
    /declare fYLoc float outer 
    /declare iSetAnchor int outer 
    /declare sFollowTarget string outer 

    /declare iAssistHealthPct int local 
    /declare iTargetId int local 
    /declare iTargetIdTmp int local    
    /declare sAssistName string local 
    /declare sTargetName string local 
    
    /varset iTargetIdTmp 0 
    
    /echo AutoBeastlord Started. 

    /if (${Defined[Param0]}) { 
       /varset sAssistName ${Param0}              
    } else { 
        /echo Error:  The name of your assist is not optional. 
        /echo Usage:  /macro bst.mac AssistName <AssistHpPct> <AnchorFlag> <sFollowTarget> 
    } 
        
    /if (${Defined[Param1]}) { 
        /varset iAssistHealthPct ${Param1}        
    } else /varset iAssistHealthPct 90 
    
    /if (${Defined[Param2]}) { 
       /varset iSetAnchor ${Param2}              
       /if (${iSetAnchor}==2) { 
           /if (${Defined[Param3]}) { 
              /varset sFollowTarget ${Param3} 
           } else /varset sFollowTarget ${sAssistName} 
         } 
   } else /varset iSetAnchor 0 
    
    #include custom3.inc 

    /echo ${sAssistName} is main assist. 
    /echo Will start combat when MA target is at ${iAssistHealthPct}%. 
    
    /assist off 
    /attack off 
        
    /if (${iSetAnchor}==1) { 
        /varset AnchorX ${Me.X} 
        /varset AnchorY ${Me.Y} 
        /echo Created anchor at Loc: ${AnchorY}, ${AnchorX}. 
    } 
    
    /if (${iSetAnchor}==2) { 
        /target ${sFollowTarget} 
        /delay 5 
        /if (!${Target.ID}) /varset sFollowTarget ${sAssistName} 
        /echo Created MoveToTarget: ${sFollowTarget}. 
    }       
        
    /if (${bUseSpecial}) { 
        /call CheckRegenEnd 
        /echo Discipline/[color=red]Beastial Fury[/color] Usage Enabled. 
        /echo Your current endurance is ${Me.Endurance}/${Me.MaxEndurance}. 
        /echo Regen endurance percent:  ${iRegenEndPct}. 
    } 
    
    /echo Waiting for ${sAssistName} to select a new target... 
    
:Wait 
    /delay 1    

    /doevents 
    
    /call CheckRegenEnd 
    /call CheckAnchor 

    /assist ${sAssistName} 
    /delay 4 
    
    /if (!${Target.ID}) /goto :Wait 
    /if (!${Target.Type.Equal["NPC"]}) /goto :Wait 
    /if (${Target.CleanName.Equal[${Me.Name}]}) /goto :Wait 
    
    /if (${iTargetIdTmp}!=${Target.PctHPs}) /echo ${Target.CleanName} targeted at ${Target.PctHPs} %hp, distance ${Target.

Distance}. 
    
    /varset iTargetIdTmp ${Target.PctHPs} 

    /if (${Target.PctHPs}<=${iAssistHealthPct} && ${Target.Distance}<${iEngageDistance}) /goto :Attack 

    /goto :Wait 

:Attack 
    /echo Fighting ${Target.CleanName} | ${Target.Level} ${Target.Class.Name}. 
    /varset sTargetName ${Target.CleanName} 
    /varset iTargetId ${Target.ID} 
    /varset bAttackTarget 1 
    
    /call CheckGM 
    /call MoveTo 
    /call GetBehind 
  [color=red]/call cast "Feral Swipe" activate[/color]
    [color=red]/call cast "Frenzy of Spirit" activate[/color]
    /face fast
    /pet attack 

:AttackLoop 
    /assist ${sAssistName} 
    
    /doevents 

    /if (!${Target.ID}) /goto :AttackEnd 
    /if (${Target.ID}!=${iTargetId}) /goto :AttackEnd 

    /call GetBehind 
    /call CheckMeleeRange 

    /if (${bAttackTarget}) { 
        /if (${Target.Distance}<${Target.MaxRangeTo} && ${Me.AbilityReady["kick"]}) /doability "kick" 

        /attack on        
        } 
    } 
    
    /doevents        

    /if (!${bAttackTarget}) /Attack off 
    /if (!${bAttackTarget}) /Attack on        

    /goto :AttackLoop 

:AttackEnd 
    /echo Combat with ${sTargetName} has ended. 
    /keypress forward 
    /keypress back 
    /varset iTargetIdTmp 0 
    /varset bDiscActive 0 

    /varset bAttackTarget 0 
    /attack off
    /pet hold
    /pet back off
    /keypress home 

    /echo Waiting for ${sAssistName} to select a new target. 
    
    /call CheckRegenEnd 
    /call CheckGM 
    
    /goto :Wait 

/endmacro 

Sub CheckMeleeRange 
   /if (!${Target.ID}) /return 

    /face fast 
    
    /if (${Target.Distance}>${Target.MaxRangeTo}*2) /call MoveTo 
    /if (${Target.Distance}>${Target.MaxRangeTo}) /keypress forward hold |If target is farther then MaxRange move forward 
    /if (${Target.Distance}<8) /keypress back hold |If target is closer then 8 move back 
    /if (${Target.Distance}<10) /keypress forward  |If target is closer then 10 stop moving forward 
    /if (${Target.Distance}>9) /keypress back |If target is farther then 9 stop moving back 

    /face fast 
/return 

    }    
/return 

Sub GetBehind 
    /declare iCount int local 
    
    /varset iCount 0 
    /varset fXLoc ${Me.X} 
    /varset fYLoc ${Me.Y} 

    /if (!${Target.ID}) /goto :noneed 
    /if (${Math.Distance[${Math.Calc[${Target.Y}-${Math.Cos[${Target.Heading.DegreesCCW}]}*10]},${Math.Calc[${Target.X}-

${Math.Sin[${Target.Heading.DegreesCCW}]}*10]}]}<5) /goto :noneed 
    /if (${Target.Distance}>${Target.MaxRangeTo}*2) /call MoveTo 

    /keypress forward hold 

:gobehindloop 
    /delay 1 
    /call CheckGM 
    
    /if (!${Target.ID}) { 
       /keypress forward 
       /goto :noneed 
    } 
    
    /if (${iCount}>1) { 
        /if (${fXLoc}==${Me.X} && ${fYLoc}==${Me.Y}) { 
              /keypress forward 
              /goto :noneed 
        } 

        /varset fXLoc ${Me.X} 
        /varset fYLoc ${Me.Y} 
        /varset iCount 0 
    } 
    
    /varcalc iCount ${iCount}+1 
    /doevents 

    /face nolook fast loc ${Math.Calc[${Target.Y}-${Math.Cos[${Target.Heading.DegreesCCW}]}*10]},${Math.Calc[${Target.X}-

${Math.Sin[${Target.Heading.DegreesCCW}]}*10]} 
    /if (${Math.Distance[${Math.Calc[${Target.Y}-${Math.Cos[${Target.Heading.DegreesCCW}]}*10]},${Math.Calc[${Target.X}-

${Math.Sin[${Target.Heading.DegreesCCW}]}*10]}]}>3) /goto :gobehindloop 

    /keypress forward 
    /face fast 

:noneed 

/return 

}

Sub CheckAtkSpecial 
   /call CheckRegenEnd 

   /if (${bUseSpecial} && !${bDiscActive} && !${bRegenEnd} && ${Target.PctHPs}<${iAttackDiscPct}) { 
       /alt activate 186 [color=red]| Beastial Fury disc[/color]
       [color=red]/varset bDiscActive 1 [/color]
   } 
/return

:WaitForBackstabRange 
      /if (${Target.Distance}<${Target.MaxRangeTo}) { 
         /doability "kick" 
      } else { 
         /call CheckMeleeRange 
         /goto :WaitForBackstabRange 
      } 
    } 
/return 
        
Sub CheckRegenEnd 
   /if (!${bRegenEnd} && ${Me.PctEndurance}<${iRegenEndPct}) { 
      /varset bRegenEnd 1 
      /echo Regen endurance to full. 
   } 
    
   /if (${bRegenEnd}) { 
       /if (${Me.Endurance}==${Me.MaxEndurance}) { 
           /varset bRegenEnd 0 
           /echo Endurance regenerated. 
      } 
   } 
    
/return    

Sub CheckAnchor 
   /call CheckGM 
    
    /if (${iSetAnchor}==1) /if (${Math.Distance[${AnchorY},${AnchorX}]}>12) /call MoveToAnchor 
    
    /if (${iSetAnchor}==2) { 
        /target ${sFollowTarget} 
        /delay 4 
        /if (${Target.Distance}>${Target.MaxRangeTo} && ${Target.ID} && ${Target.CleanName.NotEqual[${Me.CleanName}]}) /call 

MoveTo 
    }      
/return 

Sub CheckGM 
   /if (${Spawn[gm].ID}) { 
      /echo Waiting on GM to leave zone. 
      /keypress forward 
      /keypress esc 
      /attack off
      /pet hold
      /pet back off 
       /delay 4 
:gmcheck 
      /if (${Spawn[gm].ID}) { 
           /delay 10 
            /goto :gmcheck 
         } else /return 
   } 
/return 

Sub MoveTo 
    /declare iCount int local 
    
    /varset iCount 0 
    /varset fXLoc ${Me.X} 
    /varset fYLoc ${Me.Y} 

    /if (!${Target.ID}) { 
       /keypress forward 
       /return 
    } 
    
    /if (${Target.Distance}<${Target.MaxRangeTo}) { 
       /keypress forward 
       /return 
    } 
    
    /echo Moving to Target: ${Target.CleanName}. 

:fastmoveloop 
   /delay 1 
   /doevents 
    
    /if (!${Target.ID}) { 
        /keypress forward 
        /return 
    } 
    
    /face fast 

    /if (${Target.Distance}>${Target.MaxRangeTo}) /keypress forward hold 

    /if (${Target.Distance}<${Target.MaxRangeTo}) { 
        /keypress forward 
        /return 
    } 
    
    /if (${iCount}>2) { 
        /call Detectobst 
        /face fast 
        /varset iCount 0 
    } 
    
    /if (${Target.Distance}>${Math.Calc[${Target.MaxRangeTo}*2]}) /varcalc iCount ${iCount}+1 
    /goto :fastmoveloop 
/return 


Sub MoveToAnchor 
    /declare iCount int local 

    /varset fXLoc ${Me.X} 
    /varset fYLoc ${Me.Y} 
    /varset iCount 0 

    /echo Moving to Anchor at Loc: ${AnchorY}, ${AnchorX}. 

:AnchorMoveLoop  
    /delay 1 
    /doevents 
    /face nolook loc ${AnchorY},${AnchorX} 
    
    /if (${Math.Distance[${AnchorY},${AnchorX}]}>12) { 
       /keypress forward hold 
   } else { 
       /keypress forward 
        /return 
    } 

    /if (${iCount}>2) { 
        /call Detectobst 
        /face nolook loc ${AnchorY},${AnchorX} 
        /varset iCount 0 
    } 
    
    /varcalc iCount ${iCount}+1 
    /goto :AnchorMoveLoop 
/return 

Sub Detectobst 
    /delay 2 
    /if (${fXLoc}==${Me.X}) /if (${fYLoc}==${Me.Y}) /call Hitobst 
    /varset fXLoc ${Me.X} 
    /varset fYLoc ${Me.Y} 
/return 

Sub Hitobst 
    /keypress forward 
    /keypress back hold 
    
    /if (${Math.Rand[2]}) {    
        /delay 2s    
        /keypress back 
        /keypress right hold 
        /delay 8 
        /keypress right 
        
        /if (${bUseJump}) { 
           /keypress forward hold 
           /delay 8 
           /keypress jump 
        } 
    } else { 
        /delay 2s 
        /keypress back 
        /keypress left hold 
        /delay 8 
        /keypress left 
        
        /if (${bUseJump}) { 
           /keypress forward hold 
           /delay 8 
           /keypress jump 
        } 
    } 
    /delay 10 
    /keypress forward hold 
/return 

| ----- Events called by /DoEvents ----- 

Sub Event_FEROC
/keypress tab

/call Cast "Ferocity"
/keypress tab
/return 



Sub Event_DOMIN
   
/call Cast "Spiritual Dominion"
/return    



Sub Event_SV 
   
/call Cast "Spiritual Vigor"
/return 



Sub Event_IOS

/keypress tab
/call Cast "Infusion of Spirit"

/keypress tab
/return 



Sub Event_STR

/keypress tab
/call Cast "Furious Strength"
/keypress tab
/return 



Sub Event_TALIS
/keypress tab
/call Cast "Talisman of Kragg"
/keypress tab
/return



Sub Event_FREN
   
/call Cast "Frenzy"
/return

 


Sub Event_STA

/keypress tab
/call Cast "Stamina"
/keypress tab
/return




Sub Event_DEX

/keypress tab
/call Cast "Dexterity"
/keypress tab
/return

Sub Event_HASTE

/keypress tab  
/call Cast "Celerity"
/keypress tab
/return



Sub Event_Enraged 
    /varset bAttackTarget 0 
    /attack off
    /pet hold
    /pet back off
/return 

Sub Event_Offrage 
    /varset bAttackTarget 1 
    /attack on
    /pet attack 
/return 

Sub Event_Zonechange 
   /keypress up 
   /endmacro 
/return 

Sub Event_Slainby 
    /keypress up 
    /endmacro 
/return

Also, this will need the included Spellcast.inc

Code: Select all


| 
| SpellCast.inc 
| 
| Last Modified: 5/14/2004 9:30pm 
| This will cast a spell reliably for you... 
| 
| Usage: 
|       /call Cast "spellname|itemname|AA#|AAskillname" [item|activate|gem#] [nocheck|dismount|nodismount] 
| 
| If no dismount or nodismount is provided it defaults to nodismount. 
| 
| This would essentially: /cast "Death Peace" 
| example: /call Cast "Death Peace" 
| 
| This would essentially: Check for the spell in your spell slots, if not there mem it to spell 
|                         gem slot 7 and then /cast "Death Peace" 
| example: /call Cast "Death Peace" gem7 
| 
| This would essentially: /cast item "White Rope Bridle" 
| example: /call Cast "White Rope Bridle" item 
| 
| This would essentially: /alt activate 169 
| example: /call Cast "169" activate 
|  or... 
| example: /call Cast "Divine Arbitration" activate 
| 
| This would dismount if your target was lost or dies mid-cast, cast Burn and mem it to spell 
| slot 3 if it wasn't already memmed: 
| example: /call Cast "Burn" gem3 dismount 
| 
| This would not dismount but would move you back and forth if your target was lost or dies mid-cast, cast Burn and mem 
| it to spell slot 3 if it wasn't already memmed: 
| example: /call Cast "Burn" gem3 nodismount 
| 
| 'nocheck' is the default for the "loss of target/target dying" value.  If nocheck is specified (Or nothing was specified) 
| no target checking will be performed and spellcast.inc should act like the spellcast.inc of the past. 
| 
| It will return the following values: 
| CAST_SUCCESS 
| CAST_UNKNOWNSPELL 
| CAST_OUTOFMANA 
| CAST_OUTOFRANGE 
| CAST_CANNOTSEE 
| CAST_STUNNED 
| CAST_RESISTED 
| CAST_TOOK2LONG 
| CAST_ABILITYNOTREADY 
| CAST_IMMUNESLOW 
| CAST_LOSTTARGET 
| 
| New Vars Modification 
| Plazmic's no globals needed version 
| 
| Oct 09, 2003 - Updated to work with new vars and $char(casting) -gf 
| Oct 11, 2003 - switched some logic, removed defines -gf 
| Oct 15, 2003 - Item support added by -EqMule 
| XXX xx, xxxx - Modified to add automeming of spells. -Goofmester1 
| Dec 26, 2003 - fd fail 1 added -m0nk 
| Jan 01, 2004 - timeout(5s) added to stop "dead-time" -m0nk 
| Jan 01, 2004 - switchd fdfail to a standing check. -m0nk 
| Jan 01, 2004 - added silence checking as a stun check -m0nk 
| Feb 17, 2004 - added AA activate capabilities -ml2517 
| Apr 11, 2004 - Updated for new Parm system -ml2517 
| Apr 12, 2004 - Will spit out a different message on immune to slows. -ml2517 
| Apr 16, 2004 - Removed /sendkeys and replaced with /keypress. -ml2517 
| Apr 17, 2004 - Various code enhancements. -Wassup 
| Apr 20, 2004 - Updated all of the /if's to have parenthesis. -ml2517 
| Apr 25, 2004 - Updated to new variable system. -ml2517 
| Apr 29, 2004 - Fixed Item problem -ml2517 
| Apr 29, 2004 - Changed the alt ability to use AltAbilityReady instead of an event. -ml2517 
| May 02, 2004 - Added the ability to specify a gem slot to mem spells to. -ml2517 
| May 10, 2004 - Updated for new event system. 
| May 12, 2004 - Added suggestions for loss of target and stun handling change. -ml2517 
| May 13, 2004 - Activate now accepts AA skill by name or number. -ml2517 
| May 14, 2004 - Added the nocheck value, it is the default. This bypasses the target checking code. -ml2517 
| 

#event Fizzle "#*#Your spell fizzles#*#" 
#event Interrupt "#*#Your casting has been interrupted#*#" 
#event Interrupt "#*#Your spell is interrupted.#*#" 
#event Recover "#*#You haven't recovered yet...#*#" 
#event Recover "#*#Spell recovery time not yet met.#*#" 
#event Resisted "#*#Your target resisted the #*#" 
#event OutOfMana "#*#Insufficient Mana to cast this spell!#*#" 
#event OutOfRange "#*#Your target is out of range, get closer!#*#" 
#event NoLOS "#*#You cannot see your target.#*#" 
#event Stunned "#*#You cannot cast while stunned#*#" 
#event Stunned "#*#You *CANNOT* cast spells, you have been silenced!#*#" 
#event Standing "#*#You must be standing to cast a spell#*#" 
#event Standing "#*#has fallen to the ground.#*#" 
#event Collapse "#*#Your gate is too unstable, and collapses.#*#" 
#event ImmuneSlow "#*#Your target is immune to changes in its attack speed.#*#" 


Sub Cast(SpellName,ItemFlag,DismountFlag) 
   /declare HaveTarget int local 0 
   /declare CastBarTime timer local 
   /declare CastCurrLocY float local 0 
   /declare CastCurrLocX float local 0 
   /varset CastCurrLocY ${Me.Y} 
   /varset CastCurrLocX ${Me.X} 
   /if (${Target.ID}>0) /varset HaveTarget 1 
   /if (!${Defined[CastGiveUpTime]}) /declare CastGiveUpTime timer local 
   /if (!${Defined[ItemFlag]}) /declare ItemFlag string local 
   /if (!${Defined[DismountFlag]}) { 
       /declare DismountFlag string local nocheck 
       /if (${ItemFlag.Find["dismount"]}) /varset DismountFlag ${ItemFlag} 
   } 
   /if (!${Me.Standing} && !${Me.Mount.ID}>0) /stand 
   /if (${Me.Moving}) { 
       /keypress forward 
       /keypress back 
       /delay 8 
   } else { 
       /delay 4 
   } 
   /if (${ItemFlag.Equal["Item"]} || ${ItemFlag.Equal["Activate"]}) /goto :StartCast 

   /if (!${Me.Gem["${SpellName}"]}) { 
       /if (${ItemFlag.Find[gem]}) { 
           /if (${Int[${ItemFlag.Right[1]}]}>0 && ${Int[${ItemFlag.Right[1]}]}<9) { 
               /memspell ${ItemFlag.Right[1]} "${SpellName}" 
               /delay 5s 
           } else { 
               /goto :GenericMem 
           } 
       } else {        
           :GenericMem 
           /memspell 5 "${SpellName}" 
           /delay 5s 
       } 

   } 
   :StartCast 
      /varset CastGiveUpTime 5s 
   :CastNow 
      /if (${ItemFlag.Equal["Item"]}) { 
         /call ClearReturnValue 
         /cast item "${SpellName}" 
      } else /if (${ItemFlag.Equal["Activate"]}) { 
         /call ClearReturnValue 
         /if (!${Me.AltAbilityReady[${SpellName}]}) /return CAST_ABILITYNOTREADY 
         /alt activate ${AltAbility[${SpellName}].ID} 
         /varset CastBarTime ${Me.Casting.CastTime} 
      } else { 
         /if (!${Me.Gem["${SpellName}"]}) /return CAST_UNKNOWNSPELL 
         /call ClearReturnValue 
         /if (!${Me.SpellReady["${SpellName}"]}) { 
            /if (${CastGiveUpTime}==0) /return CAST_TOOK2LONG 
            /delay 1 
            /goto :CastNow 
         } 
         /cast "${SpellName}" 
         /varset CastBarTime ${Math.Calc[${Me.Casting.CastTime}*10]} 
      } 
   :WaitCast 
      /if (${Me.Casting.ID}) { 
         /if ((!${Target.ID}>0 || ${Target.Type.Equal[CORPSE]}) && !${DismountFlag.Find[nocheck]} && ${HaveTarget}==1) { 
             /if (${Me.Mount.ID}>0) { 
                 /if (${DismountFlag.Equal[dismount]}) { 
                     /dismount 
                 } else { 
                     /if (!${ItemFlag.Equal["Item"]}) { 
                         /if (${CastBarTime}<7) { 
                             :Interrupt 
                             /keypress FORWARD hold 
                             /delay 6 
                             /keypress FORWARD 
                             /keypress BACK hold 
                             /delay 8 
                             /keypress BACK 
                         } else { 
                             :HoldForSpell 
                             /delay 1 
                             /if (${CastBarTime}<7) /goto :Interrupt 
                             /goto :HoldForSpell 
                         } 
                     } else { 
                         /keypress FORWARD hold 
                         :Forward 
                         /delay 1 
                         /if (${Math.Distance[${CastCurrLocY},${CastCurrLocX}]}<6) /goto :Forward 
                         /keypress FORWARD 
                         /keypress BACK hold 
                         :Backward 
                         /delay 1 
                         /if (${Math.Distance[${CastCurrLocY},${CastCurrLocX}]}>4) /goto :Backward 
                         /keypress BACK 
                         /if (!${Me.Casting.ID}>0) /goto :DuckTime 
                     } 
                 } 
             } 
             :DuckTime 
             /keypress FORWARD 
             /keypress BACK 
             /if (!${Me.Ducking}) /keypress DUCK 
             /delay 1 
             /if (${Me.Ducking}) /keypress DUCK 
             /return CAST_LOSTTARGET 
         } 
         /delay 1 
         /goto :WaitCast 
      } 
   /delay 1 
   /doevents Fizzle 
   /doevents Interrupt 
   /doevents Interrupt 
   /doevents Recover 
   /doevents Standing 
   /doevents OutOfRange 
   /doevents OutOfMana 
   /doevents NoLOS 
   /doevents Resisted 
   /doevents ImmuneSlow 
   /doevents Stunned 
   /doevents Collapse 
   /if (${Macro.Return.Equal["CAST_RESTART"]}) /goto :StartCast 
   /if (!${Macro.Return.Equal["NULL"]}) /return ${Macro.Return} 
/return CAST_SUCCESS 

Sub ClearReturnValue 
/return NULL 

Sub Event_Fizzle 
/return CAST_RESTART 

Sub Event_Interrupt 
/return CAST_RESTART 

Sub Event_Recover 
   /delay 5 
/return CAST_RESTART 

Sub Event_Standing 
   /stand 
/return CAST_RESTART 

Sub Event_Collapse 
/return CAST_RESTART 

Sub Event_OutOfMana 
/return CAST_OUTOFMANA 

Sub Event_OutOfRange 
/return CAST_OUTOFRANGE 

Sub Event_NoLOS 
/return CAST_CANNOTSEE 

Sub Event_Stunned 
   /delay 2s !${Me.Stunned} 
/return CAST_RESTART 

Sub Event_Resisted 
/return CAST_RESISTED 

Sub Event_ImmuneSlow 
/return CAST_IMMUNESLOW

Code: Select all


[color=red]Forgot to add that you need this inc file with this macro.
| custom3.inc 
| Example include file for AutoBeastlord 

/declare bDiscActive bool outer       | Flag prevents more than 1 offensive disc per fight 
/declare bRegenEnd bool outer         | 1 = On (regen endurance to 100%), 0 = off 
/declare bUseSpecial bool outer       | Use disciplines, 1 = True, 0 = False 
/declare bUseStrike bool outer        | Use strike technique, 1 = True, 0 = False 
/declare bUseJump bool outer          | Adds a jump when in collision detection loop.  0 = off 
/declare iAttackDiscPct int outer    | Use Frenzy or Rage disc when Target.PctHps < this, 0 = off  
/declare iEngageDistance int outer   | How close the mob must be to engage 
/declare iRegenEndPct int outer      | Regen endurance to full when it gets low via $), 0 = off

| <<< Custom Vars:  Modify these according to your taste. >>> 

/varset bDiscActive 1 
/varset bRegenEnd 0             
/varset bUseSpecial 1 
/varset bUseStrike 1 
/varset bUseJump 1 
/varcalc iAttackDiscPct ${iAssistHealthPct}-10  
/varset iEngageDistance 300       
/varset iRegenEndPct 20[/color]

Hope this works good. I haven't fully tested it yet with the spellcast.inc part added, but it worked okay before I added that part. I just need some more time or help with the discs and alt activate stuff for beastial alignment, feral swipe, and such. Still working....
Last edited by screwball on Tue May 18, 2004 6:06 am, edited 3 times in total.

Goofmester1
a hill giant
a hill giant
Posts: 241
Joined: Thu Nov 06, 2003 4:26 am

Post by Goofmester1 » Tue May 18, 2004 4:03 am

Code: Select all

:Attack 
    /echo Fighting ${Target.CleanName} | ${Target.Level} ${Target.Class.Name}. 
    /varset sTargetName ${Target.CleanName} 
    /varset iTargetId ${Target.ID} 
    /varset bAttackTarget 1 
    
    /call CheckGM 
    /call MoveTo 
    /call GetBehind 
    [color=red]/keypress 1  | I don't know the alt activate # for Feral swipe yet so I just put the hotkey here.[/color] 
    /face fast 
    /pet attack 
Unless I misunderstand change the part in red to /call Cast ${AltAbility[${Feral Swipe}]} activate

Or the spellcast.inc should take care of it if you just do /call Cast "Feral Swipe" activate

screwball
orc pawn
orc pawn
Posts: 16
Joined: Wed Apr 21, 2004 10:24 pm

Post by screwball » Tue May 18, 2004 6:08 am

Fixed word wrap problem and made some other changes.

Drumstix42
a grimling bloodguard
a grimling bloodguard
Posts: 808
Joined: Mon May 03, 2004 4:25 pm

Post by Drumstix42 » Tue May 18, 2004 9:44 am

Looks good, I'll have to try it out.

Oid
a snow griffon
a snow griffon
Posts: 416
Joined: Thu Oct 17, 2002 3:26 am
Contact:

Post by Oid » Tue May 18, 2004 10:29 am

Screwball, good job, i havent looked at it closely, as I dont play a beastlord, and obviously, for the same reason, have not tested it. But you made an effort.

I wish more people would do that, instead of bitching that someone didnt run and write a macro for them.
Smokey the Lax says only you can prevent reproduction.

yesman
a lesser mummy
a lesser mummy
Posts: 64
Joined: Tue Apr 27, 2004 9:06 pm

Post by yesman » Tue May 18, 2004 1:52 pm

Paragon of Spirit is /alt activate 128
Mend Companion is /alt activate 58
Feral Swipe is /alt activate 247

screwball
orc pawn
orc pawn
Posts: 16
Joined: Wed Apr 21, 2004 10:24 pm

Post by screwball » Wed May 19, 2004 3:51 am

Thanks Oid.

Yes, I now have all the alt activate codes, so I'm good there now Yesman but I appreciate the post.

I have tested this macro now and it works nicely! I might have to work with the discs some more but I haven't really tested them out much. I tested the normal operation and the spellcasting rebuffs and everything is great.

I'll start messing with the discs soon, like making "Beastial Fury" engage during combat and everytime it pops and so on. Will keep working on that and update. Heck it might work now even, but I just haven't tried it yet so if anyone happens to do any disc stuff, let me know.

O, and thanks to "Goofmester" also. He helped me out alot with some of this coding.