Page 1 of 1

Yet Another Stick.Mac With lots of Events

Posted: Sun May 02, 2004 1:07 pm
by Fuergrissa
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

Posted: Mon May 03, 2004 2:03 pm
by deadfrog
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