Yet Another Stick.Mac With lots of Events

Post your completed (working) macros here. Only for macros using MQ2Data syntax!

Moderator: MacroQuest Developers

User avatar
Fuergrissa
a grimling bloodguard
a grimling bloodguard
Posts: 607
Joined: Mon Dec 08, 2003 3:46 pm
Location: UK

Yet Another Stick.Mac With lots of Events

Post by Fuergrissa » Sun May 02, 2004 1:07 pm

modified Stix Stick.mac and Mckorr's Autofight.inc to come up with this, its easily modified to work with most melee classes, if you need help with it post it here, if i cant help someone will.

Code: Select all

|Stick.mac
|
|Syntax:
| Usage: /macro stick
|   
|
|Functions:
|  Now automatically sets Max Distances for you.
|  Will auto Kick, Beg, and disarm.
|  Will turn off attack on ENRAGE, only if it is your mob that is enraged.
|  Stoping attack while the macro is running will stop movment.
|-Stix
|
|Heavily Modified by Fuergrissa
|Lots of Events
|If max distance is too much will set at 18
|Tells of SkillUps
|Auto Ends when Camping
|Auto Loots
|Added Taunt
|Added Section to check buffs and if not on, Cast item for you.
|Auto Join Group
|Reports XP After each fight


#event rageon "has become ENRAGED."
#event rageoff "is no longer enraged"
#event stunned "while stunned"
#event invited "To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel" 
#event mobgate " Gates."  
#event appear "You appear." 
#event appearing "You feel yourself starting to appear." 
#event losingLev "You feel as if you are about to fall"
#event exp "experience!!" 
#Event SkillUp "You have become better at" 
#Event Slain "Returning to home point, please wait..."
#Event camp "seconds to prepare your camp" 

sub main
   
   /declare MaxD int outer
   /echo Stick Macro Started with LOOT Support.

:main
   /doevents
   /if (!${Me.Buff[Grim Aura].ID}) { 
   /cast item "Reaper's Ring" 
   /delay 4s 
   }
   /if (!${Me.Buff[Bootstrutter's Blessing].ID} && !${Me.Buff[Spirit of Wolf].ID} && !${Me.Buff[Spirit of Eagle].ID}) {
   /cast item "Fabled Journeyman's Boots" 
   /delay 4s 
   }
   /if (${Me.Combat}) /goto :mob
   /goto :main

:mob
   /if (${Target.Distance}>100) {
      /echo ${Target.CleanName} IS Out Of Range
      /attack off
      /goto :main
   } 
   /if (${Target.ID}) {
      /varset MaxD ${Target.MaxRangeTo}
      /if (${MaxD}>18) /call ToFar
      /echo Attacking ${Target.CleanName} at a Distance of ${MaxD}
      /echo ${Target.CleanName} is a level ${Target.Level} ${Target.Class} That Cons ${Target.ConColor}
      /goto :combat
   }   
   /goto :main

:combat
   /doevents
   /if (${Target.ID}==${Me.ID}) /attack off
   /if (!${Me.Combat}) /goto :main
   /face fast nolook
   /if (${Target.Distance}>${MaxD}-2) /keypress forward hold
   /if (${Target.Distance}<=${MaxD}-4) /keypress forward     
   /if (${Target.Distance}<${MaxD}-7) /keypress back hold
   /if (${Target.Distance}<${MaxD}-2) /if (${Me.AbilityReady[Kick]}) /doability "Kick"
   /if (${Target.Distance}<${MaxD}-2) /if (${Me.AbilityReady[Taunt]}) /doability "Taunt"
   /if (${Target.Distance}<${MaxD}-2) /if (${Me.AbilityReady[Disarm]}) /doability "Disarm"
   /if (${Target.Distance}<${MaxD}-2) /if (${Me.AbilityReady[begging]}) {
      /attack off
      /face fast nolook
      /delay 1
      /doability "begging"
      /if (!${Target.ID}) /goto :main
      /attack on
   }
   /if (${Target.ID}) /goto :combat
   /keypress back
   /call Delay 3
   /call Loot
   /goto :main
   /return

Sub Loot
   /echo Looting Started
   /lootn never
   /declare LootSlot int local
   /declare LootLeft int local

   /varset LootLeft 0
   /target corpse radius 100 
   /loot
   /delay 2s
   /for LootSlot 1 to ${LootTotal}

   :MainLoop
      /echo Looting From Slot: ${LootSlot}
      /itemnotify loot${LootSlot} rightmouseup 
      /if (!${Corpse.Items}) /goto :DoneLooting
      /delay 2s
   /next LootSlot
   /goto :MainLoop

:DoneLooting
   /delay 1s
   /notify LootWnd DoneButton leftmouseup
   /popup Done Looting ${Target.CleanName}.
   /echo Done Looting ${Target.CleanName}.
   /lootn allways
   /return

sub ToFar
    /echo Max Distance is set at ${MaxD} which is too far.
    /echo Setting Max Distance to 18 for this fight.
    /varset MaxD 18
    /return

sub event_rageon
   /if (${Target.CurrentHPs}>10) /return
   /popup ENRAGED ATTACK OFF
   /echo Rage On
   /attack off
   /return

sub event_rageoff
   /if (${Target.CurrentHPs}>10) /return
   /popup Rage OFF, ATTACKING NOW
   /echo Rage Off
   /attack on
   /return

sub event_stunned
   /popup STUNNED STUNNED STUNNED
   /delay 1s
   /return
   
Sub event_invited
   /target clear 
   /invite 
   /return 
   
Sub Event_camp
      /echo Camping ((( Ending Macro )))
      /endmacro
   /return 

Sub event_mobgate 
   /popup ${Target.CleanName} GATED Attack Off
   /echo ${Target.CleanName} GATED! 
   /attack off 
   /return

Sub event_appear 
   /popup "I am no longer invis." 
   /return 

Sub event_appearing 
   /popup "I am starting to appear." 
   /return 

Sub event_losingLev 
   /popup "I am losing Levitate" 
   /return

Sub event_exp 
   /echo "I am at ${Float[${Me.PctExp}]} percent Normal Exp."
   /echo "I am at ${Float[${Me.PctAAExp}]} percent AA Exp." 
   /popup I am at ${Float[${Me.PctAAExp}]} percent AA Exp.
 | /popup I am at ${Float[${Me.PctExp}]} percent Normal Exp.
   /return 

Sub Delay(DelayTime)
   /delay @DelayTime
   /return 

Sub Event_SkillUp(SkillUpText)
      /declare ParseSkillLevel int local
      /declare ParseSkill string local
      /declare PositionStart int local
      /declare PositionEnd int local
      /varset PositionStart ${Math.Calc[${String["${SkillUpText}"].Find["! ("]}+2]}
      /varset PositionEnd ${String["${SkillUpText}"].Find[")"]}
      /varset ParseSkillLevel ${String[${SkillUpText}].Mid[${Math.Calc[${PositionStart}+1]},${Math.Calc[${PositionEnd}-${PositionStart}]}]}

      /varset PositionStart ${Math.Calc[${String["${SkillUpText}"].Find["at"]}+2]}
      /varset PositionEnd ${String["${SkillUpText}"].Find["!"]}
      /varset ParseSkill ${String["${SkillUpText}"].Mid[${Math.Calc[${PositionStart}+1]},${Math.Calc[${PositionEnd}-${PositionStart}]}]}
      /popup ${ParseSkill} increased - ${ParseSkillLevel} ...
      /echo ${ParseSkill} increased - ${ParseSkillLevel} ...
      /return  
      
Sub Event_Slain
      /echo ${Target.CleanName} Killed you. ((Ending Macro))
      /popup ${Target.CleanName} Killed you. ((Ending Macro))
      /endmacro

deadfrog
decaying skeleton
decaying skeleton
Posts: 2
Joined: Mon May 03, 2004 2:00 pm

Post by deadfrog » Mon May 03, 2004 2:03 pm

Made the following changes to the combat area to avoid mega-annoying spam if you try to cast a spell during combat, and to avoid attempts to move while casting.

Code: Select all

:combat
   /doevents
   /if (${Target.ID}==${Me.ID}) /attack off
   /if (!${Me.Combat}) /goto :main
   /if (!${Me.Casting.ID}) /call move_to_mob
   /if (!${Me.Casting.ID}) /call combat_abilities
   /if (${Target.ID}) /goto :combat
   /keypress back
   /call Delay 3
   /call Loot
   /goto :main
   /return

sub move_to_mob
   /face fast nolook
   /if (${Target.Distance}>@MaxD-2) /keypress forward hold
   /if (${Target.Distance}<=@MaxD-4) /keypress forward     
   /if (${Target.Distance}<@MaxD-7) /keypress back hold
   /return

sub combat_abilities
   /if (${Target.Distance}<@MaxD-2) /if (${Me.AbilityReady[Bash]}) /doability "Bash"
   /if (${Target.Distance}<@MaxD-2) /if (${Me.AbilityReady[Disarm]}) /doability "Disarm"
   /if (${Target.Distance}<@MaxD-2) /if (${Me.AbilityReady[begging]}) {
      /attack off
      /face fast nolook
      /delay 1
      /doability "begging"
      /if (!${Target.ID}) /goto :main
      /attack on
   }
   /return