• 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
Berserker Macro

Release Berserker Macro 1.0

No permission to download
Joined
Jan 20, 2013
RedCents
11¢
This is an updated afber I wrote a few years ago. It's been tested on a 100 zerker for a month now and works good. This macro was designed to maximize dps on a zerker you're botting in group. All required files are included (do not use the ninjadvloot) use the redguides one it is not included because the macro is posted on other sites also.

Also here is a holyshit for augmented frenzy. Please post any issues below.

Rich (BB code):
holyshit5=/if (${Me.CombatAbilityReady[Augmented Frenzy Rk. II]} && !${Me.Buff[Augmented Frenzy Effect II].ID} && ${Me.PctHPs}>=90 && ${Me.Combat}) /casting Bloodfury
holyshit6=/if (${Me.CombatAbilityReady[Augmented Frenzy Rk. II]} && !${Me.Buff[Augmented Frenzy Effect II].ID} && ${Me.PctHPs}<=90 && ${Me.Combat}) /Disc Augmented Frenzy Rk. II

level 100 zerker ini

Rich (BB code):
[Settings]
DpsMode=1
MainAssist=toonname
SecondAssist=toonname
TrippleAssist=toonname
EventsMaster=toonname
AssistDistance=80
AssistAt=98
DoLoot=1
DoAura=1
UseDisc=1
WhenToBurn=95
UseSS=1
UseBer=1
UseThirdspire=1
UseVehRage=1
UseJugg=1
UseBlinding=1
UseCleaving=1
UseEpic2=1
UseWarcry=1
UseIntensity=0
UseVengeful=1
UseRA=1
UseCR=1
UseOPFrenzy=1
UseVAX=1
UseVolley=1
UseBH=0
UseAOR=1
UseSlap=0
MercAssistAt=95
MercOn=0
ChatChannel=bc
ChatController=toonname
DoChatChannel=1

[Disc]
Ber=Brutal Discipline Rk. III
Cleaving=Cleaving Acrimony Discipline Rk. III
OPFrenzy=Vanquishing Frenzy Rk. III
Warcry=Battle Cry of the Mastruq
Vengeful=Avenging Flurry Discipline Rk. III
VAX=Brutal Axe Throw Rk. III
Volley=Brutal Volley Rk. III
BH=NULL
AOR=Axe of Zurel Rk. III
RespiteEndur=29
Respite=Rest Rk. III

[BUFFS]
NumSelfBuff=0

[GeneralSettings]
DoLeash=1
Leashlength=50
AutoExpAdjust=0
MaintExpLvl=20
MaxLevel=100
MasterList=|
RelayTells=0
DoFood=0
EventsMaster=toonname
AutoBalance=0
AutoBalanceHPCheck=5
autosit=1


V6.0
Rich (BB code):
|Berserker.mac v6.0

|=============================================================
#turbo 80
#include spell_routines.inc
#include wait4rez.inc
#include NinjAdvLoot.inc
#include General.inc

|=============================================================
#event Experience     "#*#You have slain#*#"
#event Experience     "#*#has been slain by#*#"
#event Experience     "#*#You gain party experience#*#"
#event Experience     "#*#You gained raid experience#*#"
#event faraway        "Your Target is too far away, get closer!"
#event SetVar         "[MQ2] set: #1# #2#"
#event nosee          "You cannot see your target."
#event CantHit        "You can't hit them from here."
#event Zone           "You have entered #1#."
#event Zone           "LOADING, PLEASE WAIT..."
#event NotHold        "Your spell did not take hold."
#event Help           "[MQ2] Help"
#chat tell
#chat chat

|=============================================================
Sub main
/declare dummy int local
/call GeneralDeclares
/call GeneralDeclares2
| /call LootLoad
/call SetupAdvLootVars
/squelch /alias /Berhelp /echo help
/echo Berserker 6.0 Started
:Mainloop
/varset MacroState MainLoop
/doevents
/if (${DoLoot} && !${Me.Invis}) /call LootMobs
/if ( ${Followflag} || ${Me.Invis} ) /goto :Mainloop
/if (!${bufftimer} && ${Me.XTarget}<1) /call checkselfbuff
/call DpsMode
/call MedTime
/if (${Me.Dead}) /call wait4rez
/if (${DoAura} && !${Me.Casting.ID} && ${Me.PctEndurance}>=5 && ${Spell[Bloodlust Aura].Stacks[0]} && !${Me.Song[Bloodlust Aura Effect].ID} && !${Me.Moving} && !${Me.Invis}) /disc Bloodlust Aura
/if (${Me.CombatAbilityReady[${Respite}]} && ${Me.PctEndurance}<=${RespiteEndur} && !${Me.CombatState.Equal[combat]} && !${Melee.DiscID}) /disc ${Respite}
/goto :Mainloop
/return


Sub DpsMode
/doevents
/if (${Me.XTarget}>0) /call GetTarget
/if (${validTarget} && ${Target.PctHPs}<=${AssistAt} && ${Target.Type.Equal[NPC]} && ${Target.Distance} < ${AssistDistance} && ${Target.ID}) /goto :KillTarget
/return
:Killtarget
:loop
/doevents       
/delay 1
/call Attack
/call CheckHealth
/if (!${validTarget} || ${ExcludeList.Find[${Target.DisplayName}]}) /multiline ; /squelch /target clear; /attack off; /return
/if (${Target.Type.Equal["Corpse"]} || !${Target.ID}) /multiline ; /squelch /target clear; /varset validTarget 0; /attack off; /return
/if (${validTarget}) /goto :loop
:end
/return

|=============================================================
Sub Attack
/varset MacroState Attack
/if (${Me.Sitting}) /squelch /stand
/if (!${Melee.Combat} && ${Target.PctHPs}<=${AssistAt}) /killthis
/if (${UseDisc}) /call UseDisc
/if (${MercOn} && ${Target.PctHPs}<${MercAssistAt}) /mercassist
/return

|=============================================================
Sub UseDisc
/varset MacroState UseDisc
/if (${Me.Dead}) /call wait4rez
/if (${UseOpenWound} && ${Me.CombatAbilityReady[${OpenWound}]} && ${Me.PctHPs}>91 && ${Me.PctEndurance}>=5 && ${Target.PctHPs}<98 && ${Me.Combat}) /disc ${OpenWound}
/if (${Me.AltAbilityReady[Battle Stomp]} && ${Me.PctEndurance}>=5 && ${Target.PctHPs}<94 && ${Me.Combat}) /alt act 1252
/if (${UseOPFrenzy} && ${Me.CombatAbilityReady[${OPFrenzy}]} && ${Me.PctEndurance}>=5 && ${Target.PctHPs}<98 && ${Me.Combat}) /disc ${OPFrenzy}
/if (${UseVAX} && ${Me.CombatAbilityReady[${VAX}]} && ${Me.PctEndurance}>=5 && ${Target.PctHPs}<96 && ${Me.Combat}) /disc ${VAX}
/if (${UseVolley} && ${Me.CombatAbilityReady[${Volley}]} && ${Me.PctEndurance}>=5 && ${Target.PctHPs}<94 && ${Me.Combat}) /disc ${Volley}
/if (${UseAOR} && ${Me.CombatAbilityReady[${AOR}]} && ${Me.PctEndurance}>=5 && ${Target.PctHPs}<94 && ${Me.Combat}) /disc ${AOR}
/if (${UseFestering} && ${Me.CombatAbilityReady[${Festering}]} && ${Me.PctEndurance}>=5 && ${Target.PctHPs}<94 && ${Me.Combat}) /disc ${Festering}
/if (${UseAugmented} && ${Me.CombatAbilityReady[${Augmented}]} && ${Me.PctHPs}<=90 && ${Me.Combat}) /disc ${Augmented}
/if (${UseSS} && ${Me.AltAbilityReady[Savage Spirit]} && ${Me.AltAbilityReady[Reckless Abandon]} && ${Me.CombatState.Equal[combat]} && ${Target.Named} && ${Target.PctHPs}<${WhenToBurn}) /alt act 465
/if (${UseSS} && ${Me.AltAbilityReady[Savage Spirit]} && ${Me.AltAbilityReady[Reckless Abandon]} && !${Melee.DiscID} && ${Me.XTarget}>4 && ${Me.CombatState.Equal[combat]} && ${Me.XTarget}>=1 && ${Target.PctHPs}<${WhenToBurn}) /alt act 465
/if (${Me.ActiveDisc.Name.Equal[Savage Spirit]} && ${Me.AltAbilityReady[Reckless Abandon]}) /alt act 3710
/if (${Me.ActiveDisc.Name.Equal[Savage Spirit]} && ${Me.AltAbilityReady[Cascading Rage]} && !${Me.Song[Quick Time].ID}) /alt act 499
/if (${UseBer} && !${Melee.DiscID} && !${Me.AltAbilityReady[Savage Spirit]} && ${Me.CombatAbilityReady[${Ber}]} && ${Me.Combat} && ${Target.Named} && ${Target.PctHPs}<${WhenToBurn}) /disc ${Ber}
/if (${UseCleaving} && !${Melee.DiscID} && !${Me.CombatAbilityReady[${Ber}]} && !${Me.AltAbilityReady[Savage Spirit]} && ${Me.CombatAbilityReady[${Cleaving}]} && ${Target.PctHPs}<${WhenToBurn} && ${Target.Named}) /disc ${Cleaving}
/if (${UseWarcry} && ${Me.CombatAbilityReady[${Warcry}]} && ${Me.Combat} && ${Target.PctHPs}<${WhenToBurn} && ${Target.Named}) /disc ${Warcry}
/if (${UseVehRage} && ${Me.XTarget}>1 && ${Me.AltAbilityReady[Vehement Rage]} && ${Me.Combat} && ${Target.PctHPs}>40 && ${Target.PctHPs}<${WhenToBurn}) /alt act 800
/if (${UseJugg} && ${Me.XTarget}>1 && ${Me.AltAbilityReady[Juggernaut Surge]} && ${Me.Combat} && ${Target.PctHPs}>40 && ${Target.PctHPs}<${WhenToBurn}) /alt act 961
/if (${UseThirdspire} && ${Me.XTarget}>1 && ${Me.AltAbilityReady[Fundament: Third Spire of Savagery]} && ${Target.PctHPs}>40 && ${Me.Combat} && ${Target.PctHPs}<${WhenToBurn}) /alt act 1502
/if (${UseEpic2} && ${Cast.Ready[VengeFul Taelosian Blood Axe]} && ${Target.PctHPs}>40 && !${Me.Buff[Blinding Fury].ID} && ${Target.PctHPs}<90 && !${Me.Moving} && ${Me.Combat}) /casting "VengeFul Taelosian Blood Axe"
/if (${UseEpic2} && ${Cast.Ready[Raging Taelosian Alloy Axe]} && ${Target.PctHPs}>40 && !${Me.Buff[Blinding Fury].ID} && ${Target.PctHPs}<90 && !${Me.Moving} && ${Me.Combat}) /casting "Raging Taelosian Alloy Axe"
/if (${UseBlinding} && !${Me.CombatAbilityReady[${Frenzied}]} && !${Me.Song[${Frenzied}].ID} && ${Me.XTarget}>5 && ${Me.AltAbilityReady[Blinding Fury]} && !${Me.Song[Strike of Savagery].ID} && ${Target.PctHPs}<98 && ${Target.PctHPs}>40 && ${Me.Combat}) /alt act 610
/if (${UseBer} && !${Me.AltAbilityReady[Savage Spirit]}  && !${Melee.DiscID} && ${Me.CombatAbilityReady[${Ber}]} && ${Me.Combat} && ${Me.XTarget}>3 && ${Target.PctHPs}<${WhenToBurn}) /disc ${Ber}
/if (${UseCleaving} && !${Melee.DiscID} && !${Me.CombatAbilityReady[${Ber}]} && !${Me.AltAbilityReady[Savage Spirit]} && ${Me.XTarget}>2 && ${Me.Combat} && ${Me.CombatAbilityReady[${Cleaving}]}) /disc ${Cleaving}
/if (${UseVengeful} && !${Melee.DiscID} && !${Me.AltAbilityReady[Savage Spirit]} && !${Me.CombatAbilityReady[${Ber}]} && ${Target.PctHPs}>40 && ${Target.PctHPs}<80 && !${Me.Buff[Blinding Fury].ID} && ${Me.Combat} && ${Me.CombatAbilityReady[${Vengeful}]}) /disc ${Vengeful}
/if (${UseVengeful} && !${Melee.DiscID} && ${Target.Named} && !${Me.CombatAbilityReady[${Cleaving}]} && !${Me.AltAbilityReady[Savage Spirit]} && !${Me.CombatAbilityReady[${Ber}]} && !${Me.Buff[Blinding Fury].ID} && ${Me.Combat} && ${Me.CombatAbilityReady[${Vengeful}]}) /disc ${Vengeful}
/return


|=============================================================
Sub CheckHealth
/varset MacroState CheckHealth
/if (${Me.Dead}) /call wait4rez
/return

|=============================================================
Sub Event_SetVar(string line,string varName,string value)
/if ( ${value.Equal[on]} ) /varset value 1
/if ( ${value.Equal[off]} ) /varset value 0
/if ( ${Defined[${varName}]} ) {
     /varset ${varName} ${value}
     /popup ${varName} is set to ${value} now.
     /ini "${iniName}" Settings "${varName.Left[1].Upper}${varName.Right[-1]}" "${value}"
   }
/return

|=============================================================
Sub MercsDoWhat
        /if (!${MercOn}) /return
        /if (${Me.Mercenary.Equal[Active]}) /varset MercInGroup 1
        | Revive the merc if dead and previously detected in group
        /if (${MercInGroup} && ${Window[MMGW_ManageWnd].Child[MMGW_SuspendButton].Enabled} && ${Me.Mercenary.Equal[UNKNOWN]}) /notify MMGW_ManageWnd MMGW_SuspendButton LeftMouseUp
        /if (${MercAssistAt}>=${Spawn[${MyTargetID}].PctHPs} && ${Me.Mercenary.Equal[Active]} && ${CombatStart} && !${MercAssisting}) {
            /mercassist
            /if (${DebugCombat}) /echo MERC ${Spawn[${MyTargetID}].CleanName} %:${Spawn[${MyTargetID}].PctHPs} ID:${Spawn[${MyTargetID}].ID}
            /varset MercAssisting 1
        }
        /if (${Debug}) /echo MercsDoWhat leave
    /return

|=============================================================
Sub Checkall
/doevents
/varset MacroState checkall
/declare MobID int local
/declare i int local
/declare mobcount int local
/declare Mobs int local
/if (${Me.Dead}) /call wait4rez
/if (${Target.Type.Equal[Corpse]} || ${Target.Type.Equal[PC]}) {
    /squelch /target clear
    /call interrupt
    /return
}
/if (${DpsMode}) /return
/if (${SpawnCount[npc los Range 5 110 radius 50 zradius 50 targetable]}) {
    /varset Mobs ${SpawnCount[npc los Range 5 110 radius 50 zradius 50 targetable]}
    /for i 1 to ${Mobs}
/varset MobID ${NearestSpawn[${i}, npc los Range 5 110 radius 50 zradius 50 targetable].ID}
/if (${ExcludeList.Find[${Spawn[id ${MobID}].CleanName}]}) /return
     /varcalc mobcount ${mobcount}+1
     :skip
/next i
}
/return

|=============================================================
Sub GetTarget
/varset MacroState GetTarget
/declare i int local
/declare tempID int local ${Target.ID}
/if (${Me.Moving}) /return
  /if (${Spawn[${MainAssist}].ID}) {
    /assist ${MainAssist}
  } else /if (${Spawn[${SecondAssist}].ID}) {
    /assist ${SecondAssist}
  } else /if (${Spawn[${TripleAssist}].ID}) {
    /assist ${TripleAssist}
  }
/if (${ExcludeList.Find[${Target.DisplayName}]}) /goto :notgood
   /if ( ( ${Spawn[${tempID}].Type.Equal[npc]} || ( ${Spawn[${tempID}].Type.Equal[pet]} && !${Spawn[${tempID}].Master.Type.Equal[pc]} ) ) && ( ( ${Spawn[pc ${mainTank}].NearestSpawn[radius ${Math.Calc[${AssistDistance}*2]} id ${tempID}].ID} && ${Spawn[pc ${mainTank}].Distance3D}<=${AssistDistance} ) || !${Spawn[pc ${mainTank}].ID} || ${Spawn[pc ${mainTank}].Distance3D}>200 ) && ${tempID}!=${petID} && ( ${aggroAnim.Find[|${Spawn[${tempID}].Animation}|]} || ${Spawn[${tempID}].PctHPs}<${AssistAt} || ${Me.TargetOfTarget.Type.Equal[pc]} || ${Me.TargetOfTarget.Master.Type.Equal[pc]} ) ) {
      /varset validTarget 1
      /varset CurrentTarget ${Target.ID}
   } else {
       :notgood
      /varset validTarget 0
   }
/return

|=============================================================
Sub Checkselfbuff
/varset MacroState CheckSelfBuff
  /declare a int local
  /declare b int local 1
  /declare ItemSlot string local
  /declare OldItem string local
  /if (${Zone.ID}!=${currentZone}) /call Event_Zone
  /if (${Me.Invis}) /return
  /if ( !${NumSelfBuff} ) /return
  /for a 1 to ${NumSelfBuff}
    /if ( ${selfBuff${a}.NotEqual[NULL]} && ${SelfType${a}.Equal[item]} && ${FindItem[=${selfBuff${a}}].ID} && ${Me.Buff[${FindItem[=${selfBuff${a}}].Spell.Name}].Duration}<4 ) {
      :CheckNoStack
       /if (!${Spell[${FindItem[=${selfBuff${a}}].Spell.Name}].Stacks[2]}) /goto :SkipBuff
       /if (${FindItem[=${selfBuff${a}}].InvSlot}>21) {
         /varset ItemSlot ${FindItem["${selfBuff${a}}"].WornSlot[1].Name}
       } else {
         /varset ItemSlot ${FindItem[=${selfBuff${a}}].InvSlot.Name}
       }
      /if (${Me.Inventory[${ItemSlot}].Name.NotEqual["${selfBuff${a}}"]} && ${FindItem[${selfBuff${a}}].EffectType.Find[Click Worn]}) {
        /varset OldItem ${Me.Inventory[${ItemSlot}].Name}
        /call cast "${selfBuff${a}}" Item 0
        /delay 1
        /call SwapItem "${OldItem}" ${ItemSlot}
        /delay 5s ${Me.Inventory[${ItemSlot}].Name.Equal[${OldItem}]}
      } else {
       /call cast "${selfBuff${a}}" Item 0 CheckAll
       /return
      }
    }
    :SkipBuff
  /next a

  /varset bufftimer 10s

   /if (${Me.Dead}) /call wait4rez
/return

|=============================================================
Sub DeclareIniVar(string name,string varType,string section,string value,string alias)
  /if ( !${Defined[${name}]} ) /declare ${name} ${varType} outer
  /varset ${name} ${Ini[${iniName},${section},${name.Left[1].Upper}${name.Right[-1]},"${value}"]}
  /ini "${iniName}" "${section}" "${name.Left[1].Upper}${name.Right[-1]}" "${${name}}"
  /if ( ${Defined[alias]} ) /squelch /alias ${alias} /echo set: ${name}
  /if (${Me.Book[${Me.Book[${${name}} rk. iii]}].ID}) /varset ${name} ${Me.Book[${Me.Book[${${name}} rk. iii]}].Name}
  /if (${Me.Book[${Me.Book[${${name}} rk. ii]}].ID}) /varset ${name} ${Me.Book[${Me.Book[${${name}} rk. ii]}].Name}
  /if (${Me.CombatAbility[${${name}} rk. iii]}) /varset ${name} ${${name}} rk. iii
  /if (${Me.CombatAbility[${${name}} rk. ii]}) /varset ${name} ${${name}} rk. ii
/return

|=============================================================
Sub Event_nosee
/varset MacroState NOSEE
/if (${Target.Distance} >50 && ${SpawnCount[npc radius 50]} || ${Target.Distance} > ${AssistDistance}) /squelch /target clear
/doevents flush nosee
/varset MainMobID 0
/delay 1
/return

|=============================================================
Sub CheckName
/declare lMobID    int local
/declare Counter    int local
/declare lMobToKill   int local 0
/declare Mobs int local
/if (!${SpawnCount[npc radius 50 zradius 30]}) /return
/varset Mobs ${SpawnCount[npc radius 50 zradius 30 los]}
  /for Counter 1 to ${Mobs}
    /varset lMobID ${NearestSpawn[${Counter},npc radius 50 zradius 30 los].ID}
    /if (${NameList.Find[${Spawn[ID ${lMobID}]}].CleanName} || ${MezzImmuneList.Find[${Spawn[ID ${lMobID}].CleanName}]})  /if (!${ExcludeList.Find[${Spawn[ID ${lMobID}].CleanName}]}) {
       /if (${Target.ID}!= ${lMobID} && !${NameList.Find[${Target.CleanName}]} && !${MezzImmuneList.Find[${Target.CleanName}]} && !${Target.Named} ) /target id ${lMobID}
       /delay 1s ${Target.ID}==${lMobID}
       /return
    }
  /next Counter
/return

|=============================================================
Sub Event_Experience
/varset MacroState Experience
/if (${Me.Casting.ID}) /call interrupt
/if (${Math.Distance[${Me.Y},${Me.X}:${stakeY},${stakeX}]}> ${Math.Calc[${leashlength}+50]} && ${currentZone} == ${Zone.ID} && ${DoLeash}) /call leash
/if (${DpsMode}) /varset validTarget 0
/return

|=============================================================
Sub Event_faraway
/varset MacroState Faraway
/if (!${DpsMode}) /goto :end
/delay 2s !${Me.Moving}
/if (!${Me.Moving}) /assist ${MainTank}
/delay 5
:end
/doevents flush faraway
/return

|=============================================================
Sub Event_CantHit
/varset CantHit ${Math.Calc[${CantHit}+1]}
/if (${CantHit} > 15) /multiline ; /varset TempIgnoreTimer${Target.ID} 45s ; /squelch /target clear
/return

|=============================================================
Sub Event_NotHold
/if (${Defined[TempIgnoreTimer${Target.ID}]} && ${castReturn.Equal[CAST_NOTHOLD]}) /multiline ; /varset TempIgnoreTimer${Target.ID} 60s ; /squelch /target clear
/doevents flush NotHold
/delay 3
/return

| ################# EQBC Chat handler
Sub Event_EQBC(EQBCSay,EQBCSender,EQBCCommand)
    /if (!${Defined[EQBCSender]}) /declare EQBCSender string local LOCAL
    /call Event_Chat eqbc ${EQBCSender} ${EQBCCommand}
    /return

| ################# Tells n Hells
Sub Event_Chat(string ChatType,string ChatSender,string ChatTextRaw)
    /if (!${Select[${ChatType},eqbc,GROUP,TELL,RAID]} || (${ChatType.Equal[TELL]} && ${Select[${Spawn[${ChatSender}].Type},NPC,PET]}) || (${Me.Invis} && !${Select[${ChatTextRaw},autofollow,breakinvis]}) || ${Select[${ChatTextRaw},I,NULL]} ) /return
    /if (${ChatSender.Equal[local]}) /varset ChatSender ${Me.Name}
    /if (${ChatType.Equal[TELL]} && ${ChatSender.Left[1].Compare[ ]}<0) /varset ChatSender ${ChatSender.Right[-2].Left[-1]}
    /call validateSender ${ChatSender}
    /if (!${BuffBot} && ${Select[${ChatType},eqbc,GROUP,TELL,RAID]}>0 && ${senderValidated}) /varset ChatText ${ChatTextRaw}
    /if (${debug}) /echo debug:  buffbot: ${BuffBot}  ChatType ${Select[${ChatType},eqbc,GROUP,TELL,RAID]}  Chatcontroller Validated: ${senderValidated} ${ChatText} ${ChatTextRaw}
    /if (!${BuffBot}) {
        /if (!${senderValidated}) {
            /if (${ChatType.Equal[TELL]}) {
                /if (${DoChatChannel}) /${ChatHere} <TELL> [${ChatSender}]: ${ChatTextRaw}
                /return
            }
            /if (${ChatType.Equal[GROUP]} && ${GroupChatRelay}) {
                /if (${DoChatChannel}) /${ChatHere} <GROUP CHAT> [${ChatSender}]: ${ChatTextRaw}
                /if (${DoGroupCommands}) /varset ChatText ${ChatTextRaw}
                /if (!${DoGroupCommands}) /return
            }
            /if (${ChatType.Equal[RAID]} && ${RaidChatRelay})  {
                /if (${DoChatChannel}) /${ChatHere} <RAID CHAT> [${ChatSender}]: ${ChatTextRaw}
                /return
            }
        }
    }
    /if (!${senderValidated}) /return
        /return
    }

Sub ValidateSender(string vsender)
    /if (${Select[${vsender},${ChatController}]}>0) {
            /varset senderValidated 1
            /return
        }
    /varset senderValidated 0
/return

|=============================================================
Sub GeneralDeclares
/declare Followflag int outer 0
/declare Y          float outer
/declare X          float outer
/declare Counter       int    local
/declare iMobID       int    outer
/declare iMobCount      int   outer 0
/declare iMobArray      int   outer 15
/declare iMobList[16]       int    outer
/declare iDebuffList[16]    int    outer
/declare iniName string outer Ber_${Me.Name}.ini
/declare bufftimer timer outer
/declare MainMobID int outer
/declare p int local
/declare TempIgnoreTimer timer outer
/declare CurrentTarget int outer
/declare following string outer
/declare validTarget int outer
/declare CantHit int outer
/declare Respite outer
/declare ChestItem string outer
/declare Ber outer
/declare Cleaving outer
/declare OPFrenzy outer
/declare Warcry outer
/declare Vengeful outer
/declare VAX outer
/declare Volley outer
/declare BH outer
/declare AOR outer
/declare Slap outer
/declare Frenzied outer
/Declare ChatChannel outer
/Declare ChatController outer
/Declare DoChatChannel outer
/declare senderValidated int outer         0
/declare ChatText string outer
/declare ChatHere string outer
/declare MercAssistAt  string outer
/declare MercOn string outer
/declare MercInGroup int outer       0
/declare Festering string outer
/declare AugmenedFrenzy string outer
/declare OpenWound string outer
/call DeclareIniVar DpsMode int Settings 0 /dps
/call DeclareIniVar MainAssist string Settings somebody /ma
/call DeclareIniVar SecondAssist string Settings somebody
/call DeclareIniVar TrippleAssist string Settings somebody
/call DeclareIniVar EventsMaster string Settings somebody
/call DeclareIniVar AssistDistance int Settings 80 /assistdistance
/call DeclareIniVar AssistAt int Settings 99 /assistat
/call DeclareIniVar DoLoot int Settings 0 /Doloot
/call DeclareIniVar DoAura int Settings 0 /DoAura
/call DeclareIniVar UseDisc int Settings 0 /UseDisc
/Call DeclareIniVar WhenToBurn int Settings 95 /burn
/Call DeclareIniVar UseSS int Settings 0 /UseSS
/Call DeclareIniVar UseBer int Settings 0 /UseBer
/Call DeclareIniVar UseThirdspire int Settings 0 /UseThirdSpire
/Call DeclareIniVar UseVehRage int Settings 0 /UseVehRage
/Call DeclareIniVar UseJugg int Settings 0 /UseJugg
/Call DeclareIniVar UseBlinding int Settings 0 /UseBlinding
/Call DeclareIniVar UseCleaving int Settings 0 /UseCleaving
/Call DeclareIniVar UseEpic2 int Settings 0 /UseEpic2
/Call DeclareIniVar UseWarcry int Settings 0 /UseWarcry
/Call DeclareIniVar UseIntensity int Settings 0 /UseIntensity
/Call DeclareIniVar UseVengeful int Settings 0 /UseVengeful
/Call DeclareIniVar UseRA int Settings 0 /UseRA
/Call DeclareIniVar UseCR int Settings 0 /UseCR
/Call DeclareIniVar UseOPFrenzy int Settings 0 /UseOPFrenzy
/Call DeclareIniVar UseVAX int Settings 0 /UseVAX
/Call DeclareIniVar UseVolley int Settings 0 /UseVolley
/Call DeclareIniVar UseBH int Settings 0 /UseBH
/Call DeclareIniVar UseAOR int Settings 0 /UseAOR
/Call DeclareIniVar UseSlap int Settings 0 /UseSlap
/Call DeclareIniVar UseFrenzied int Settings 0 /UseFrenzied
/Call DeclareIniVar UseAugmented int Settings 0 /UseAugmented
/Call DeclareIniVar UseFestering int Settings 0 /UseFestering
/Call DeclareIniVar UseOpenWound int Settings 0 /UseOpenWound
/Call DeclareIniVar Ber Settings Disc
/Call DeclareIniVar Cleaving Settings Disc
/Call DeclareIniVar OPFrenzy Settings Disc
/Call DeclareIniVar Warcry Settings Disc
/Call DeclareIniVar Vengeful Settings Disc
/Call DeclareIniVar VAX Settings Disc
/Call DeclareIniVar Volley Settings Disc
/Call DeclareIniVar BH Settings Disc
/Call DeclareIniVar AOR Settings Disc
/Call DeclareIniVar Frenzied Settings Disc
/Call DeclareIniVar Festering Settings Disc
/Call DeclareIniVar AugmenedFrenzy Settings Disc
/Call DeclareIniVar OpenWound Settings Disc
/Call DeclareIniVar RespiteEndur int Disc 0
/call DeclareIniVar Respite string Disc ""
/Call DeclareIniVar MercAssistAt string  Settings
/Call DeclareIniVar MercOn string  Settings
/Call DeclareIniVar ChatChannel string  Settings
/Call DeclareIniVar ChatController string  Settings
/Call DeclareIniVar DoChatChannel int Settings 1
/call DeclareIniVar NumSelfBuff string BUFFS 0
/if (${NumSelfBuff}) {
    /for p 1 to ${NumSelfBuff}
  /call DeclareIniVar selfBuff${p} string BUFFS Buff/Item Name here
  /call DeclareIniVar SelfType${p} string BUFFS Gem# for spells/Item for clickies
  /next p
}
/return

|=============================================================
Sub Event_Help
/echo Berserker Script Help
/echo /Radius # - Sets The Range in which Macro will search for mobs. Any mob higher then 50 it will try to cast an aggro spell from a distance and/or use the range item you set up.
/echo /Dps On/Off - When turned on the Macro will not cast any aggro spells and will not taunt. It will start assisting someone else and just attack and use dps Type spells.
/echo /MA ToonName - This is to be used with dps mode. This basically sets who you're going to be assisting.
/echo /Assistdistance # - This is how close the mob has to be before it will start attacking when it reaches the desired health. This is only for DPS mode.
/echo /Assistat # - This is the health the mob has to be before it decides to even attack If the mob is close enough. This is only for DPS Mode.
/echo /Doloot On/Off - Turns looting On and Off.
/echo /Leash On/Off - Turns leashing on or off. The stake is created when Macro is started.
/echo /LeashLength # - How far the toon can be before it runs back to the leash point.
/echo /AutoSit On/Off - Turns Auto Sitting on or off. Will try to sit if either Mana or Endurance is under 90%.
/echo /Autoadjustexp On/Off - Turns on whether you want the Macro to auto adjust Whether your Exp goes to Level or AAs.
/echo /Maintexplvl # - This is the minimum amount of Exp you want in the Level you're currently at to have before the AutoAdjuster will make Exp go to AAs.
/echo /MaxLevel # - This is the Level your toon needs to be before it even decides to go to AAs.
/return
 
Last edited:
Updated

Changes to ini
Settings
UseAugmented=1
UseFestering=1
UseOpenWound=1

Disc
Festering=Festering Rage Rk. II
AugmenedFrenzy=Augmented Frenzy Rk. III
OpenWound=Open Wound

Other changes
1. It now burns based on number of XTargets instead of spawn count. (>4) and it will use disc.
2. It now burns using Target.Named instead of the ini where you had to put the named down in each zone.
3. It now uses Me.ActiveDisc to determine if you're using SS so it will always stack Reckless Abandon with it and Cascading rage (if you do not have quick time). No more using SS while Reckless is down or using SS but never using Reckless half the time. This will always use them together 100% of the time.
4. I fixed self buffs. I personally tested this myself added my items and set it to 5 self buffs put the item names in and it uses them all. I changed the code so self buff uses Me.XTarget<1 instead of spawn count (it would not buff if you were near an npc)
 
Stupid question I know, but just how do i load this? i.e is the INI file for kissassist? or do i load the mac file and it uses the ini file? also where do i paste the holyshit stuff?

total noob to MQ here

also " EventsMaster=toonname" and "ChatController=toonname" are these the character name i would physicaly be playing from and sending commands to the zerker from?
 
What kind of dps do you get with this out of curiosity? I have a 100 zerker with a rocksmasher that just rots because his dps is ass and I haven't put the time into a kiss ini for him, if this works well I may dust him off
 
What kind of dps do you get with this out of curiosity? I have a 100 zerker with a rocksmasher that just rots because his dps is ass and I haven't put the time into a kiss ini for him, if this works well I may dust him off

Raid zerker ? 50k + on anything 99 or lower, 36k + on stuff 100 + you need a bard though for that. Group Zerker 25k on 100+, 36k on 99 or lower

Stupid question I know, but just how do i load this? i.e is the INI file for kissassist? or do i load the mac file and it uses the ini file? also where do i paste the holyshit stuff?

total noob to MQ here

also " EventsMaster=toonname" and "ChatController=toonname" are these the character name i would physicaly be playing from and sending commands to the zerker from?

They're not used anymore. ChatController was so i could tell the zerker to invis or stick etc.
 
Thanks Will but just how do i load all this? im assuming i paste the Holyshit info into the server_name_ini file, but doesnt that need a kissassist file?
also assumign i paste the mac and ini file in macro folder and then type /berserker.mac ? (assuming thats name ive saved it as)
 
Thanks Will but just how do i load all this? im assuming i paste the Holyshit info into the server_name_ini file, but doesnt that need a kissassist file?
also assumign i paste the mac and ini file in macro folder and then type /berserker.mac ? (assuming thats name ive saved it as)

Yes
 
Well, Almost Yes.. You will need to move the holyshits to your server_name_ini file but look for the [MQ2melee] section and put them there. Then once you cut and paste the macro source into a file named berserker.mac(in the Macros folder). Then in EQ with MQ2 Loaded, you would use the command /mac berserker.mac or /mac berserker, either will work.

Have fun.
 
Tried running this tonite but kept getting error
cant parse waiting4rez.in and general.inc

when i looked thru MQ2 folders cant find these 2 files anywhere
 
Thought i included them in the original post guess not.

- - - Updated - - -

I edited the original post with them attached.
 
thanks will try it out later

- - - Updated - - -

getting message "Subroutine GeneralDeclares 2 not found" any ideas how to fix?
 
mine was fine until recently I keep getting no agro on path encountered and he cancel's mission no matter what I do

- - - Updated - - -

shit wrong post this is for SK into hills sorry !
 
got round to trying this out again as having probs with kiss on my zerker, however cple questions

1 cant get leash to work have set to 1 in ini file but nothing happens

2 where do i list what item clickie buffs i want berserker to load and in what format?

thanks for the help
 
i was using this before he added clicky maintance, there is a sub and i think its /addclicky with item on cursor with the mac running. i will try to get the leash command later. Very good macro though, burns on every pull for max dps, i would switch to it just for named then run a custom mac for trash.
 
Rich (BB code):
[BUFFS]
NumSelfBuff=5
SelfBuff1=Mask of Ulrich
SelfType1=Item
SelfBuff2=Vial of Caustic Fluid
SelfType2=Item
SelfBuff3=Durable Pauldrons
SelfType3=Item
SelfBuff4=Choker of Gasping Breaths
SelfType4=Item
SelfBuff5=Corroded Ear-Hoop
SelfType5=Item

View attachment Berserker.mac
View attachment General.inc

I don't use it anymore because I moved all the burns to holyflags and just use kiss.
 
Updated for 105 Berz with current t2-t3 raid gear I'm pulling 150k dps ez with this kissassist macro, this is only set for groupage and once u assist u will not be locked on the target until its dead and chasing the main tank. so if u want to drive then chaseassist=0 and Role=Null. but other than that hehe enjoy and tailor ur RK. to what u have. If u don't have whats on the list then u need it....


[General]
KissAssistVer=9.2.4
Role=Assist
CampRadius=30
CampRadiusExceed=400
ReturnToCamp=0
ChaseAssist=1
ChaseDistance=25
MedOn=1
MedStart=5
MedCombat=1
LootOn=1
RezAcceptOn=1
AcceptInvitesOn=1
GroupWatchOn=0
EQBCOn=1
IRCOn=0
MiscGem=8
HoTTOn=0
CampfireOn=0
CastingInterruptOn=0
CharInfo=Berserker|105
MiscGemRemem=1
DPSMeter=1
ScatterOn=0
[Buffs]
BuffsOn=1
Buffs1=Axe of the Demolisher|Summon|Axe of the Demolisher|300
Buffs2=Bloodlust Aura|Aura
Buffs3=Breather Rk. III|end|20
Buffs4=Communion of Blood|end|50|50
Buffs5=NULL
Buffs6=NULL
Buffs7=NULL
Buffs8=NULL
Buffs9=NULL
Buffs10=NULL
Buffs11=NULL
Buffs12=NULL
Buffs13=NULL
Buffs14=NULL
Buffs15=NULL
Buffs16=NULL
Buffs17=NULL
Buffs18=NULL
Buffs19=NULL
Buffs20=NULL
RebuffOn=1
ChecKBuffsTimer=20
PowerSource=NULL
BuffsSize=20
[Melee]
AssistAt=100
MeleeOn=1
FaceMobOn=1
MeleeDistance=75
StickHow=loose
AutoFireOn=0
BeforeCombat=Kick in the Shins RK. II
UseMQ2Melee=1
[AE]
AEOn=1
AERadius=45
AE1=War cry of the Braxi
AE2=Arcslice Rk. II|99
AE3=NULL
AE4=NULL
AE5=NULL
AE6=NULL
AE7=NULL
AE8=NULL
AE9=NULL
AE10=NULL
AE11=NULL
AE12=NULL
AE13=NULL
AE14=NULL
AE15=NULL
AE1=NULL
AE2=NULL
AESize=10
[DPS]
DPSOn=2
DPSSkip=1
DPSInterval=0
DPS1=NULL
DPS2=Disconcerting Discipline Rk. III|99
DPS3=Demolishing Volley Rk. III|99
DPS4=Demolishing Frenzy Rk. III|99
DPS5=Axe of the Aeons Rk. III|99
DPS6=Demolishing Axe Throw Rk. III|99
DPS7=Dichotomic Rage|90
DPS8=Sapping Strikes|99
DPS9=Bubbling Rage Rk. III|99
DPS10=Phantom Assailant RK. III|99
DPS11=Banestrike|99
DPS12=Blinding Axe|99
DPS13=Amplified Frenzy RK. III|99
DPS14=Bubbling Rage RK. III|99
DPS15=Frenzy|30
DPS16=NULL
DPS17=NULL
DPS18=NULL
DPS19=NULL
DPS20=NULL
DebuffAllOn=0
DPS2=NULL
DPS7=NULL
DPSSize=20
[Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=0
Heals1=NULL
Heals2=NULL
Heals3=NULL
Heals4=NULL
Heals5=NULL
XTarHeal=0
HealGroupPetsOn=0
XTarHeal2=0
HealsSize=5
[Cures]
CuresOn=0
Cures=NULL
Cures1=NULL
Cures2=NULL
Cures3=NULL
Cures4=NULL
Cures5=NULL
CuresSize=5
[Burn]
BurnText=Decepticons Attack
Burn10=Frenzied Resolve Discipline RK. III
Burn11=Savage Spirit
Burn12=Reckless Abandon
Burn13=Juggernaut Surge
Burn14=Glyph of Destruction II
Burn15=Shared Cruelty RK. II
UseTribute=0
BurnAllNamed=1
Burn3=Blood Pact
Burn1=Velazul's Warmonger Coat
Burn2=Vengeful Taelosian Blood Axe
Burn4=Disconcerting Discipline RK. III
Burn5=Sapping Strikes RK. III
Burn6=Cry of Battle
Burn7=Cry Havoc
Burn8=Fundament: Second Spire of Savagery
Burn9=Bloodfury
BurnSize=15
[Pull]
PullWith=Melee
MaxRadius=350
MaxZRange=50
PullWait=0
PullRoleToggle=0
ChainPull=0
ChainPullHP=90
ChainPullPause=30|2
PullLevel=0|0
PullPath=NULL
[AFKTools]
AFKHelp=AFKGMAction=0 Off, 1 Pause Macro, 2 End Macro, 3 Unload MQ2, 4 Quit Game
AFKToolsOn=0
AFKGMAction=1
AFKPCRadius=150
CampOnDeath=0
ClickBacktoCamp=0
[Merc]
Help=To use: Turn off Auto Assist in Manage Mercenary Window
MercOn=0
MercAssistAt=92
[Aggro]
AggroOn=0
Aggro1=NULL
Aggro2=NULL
Aggro3=NULL
Aggro4=NULL
Aggro5=NULL
AggroSize=5
[SpellSet]
LoadSpellSet=0
SpellSetName=KissAssist
[GMail]
GMailHelp=Events currently support - Dead,GM,Level,Named,Leftgroup
GMailOn=0
GMailSize=5
GMail1=NULL
GMail2=NULL
GMail3=NULL
GMail4=NULL
GMail5=NULL

- - - Updated - - -

Updated for 105 Berz with current t2-t3 raid gear I'm pulling 150k dps ez with this kissassist macro, this is only set for groupage and once u assist u will not be locked on the target until its dead and chasing the main tank. so if u want to drive then chaseassist=0 and Role=Null. but other than that hehe enjoy and tailor ur RK. to what u have. If u don't have whats on the list then u need it....


[General]
KissAssistVer=9.2.4
Role=Assist
CampRadius=30
CampRadiusExceed=400
ReturnToCamp=0
ChaseAssist=1
ChaseDistance=25
MedOn=1
MedStart=5
MedCombat=1
LootOn=1
RezAcceptOn=1
AcceptInvitesOn=1
GroupWatchOn=0
EQBCOn=1
IRCOn=0
MiscGem=8
HoTTOn=0
CampfireOn=0
CastingInterruptOn=0
CharInfo=Berserker|105
MiscGemRemem=1
DPSMeter=1
ScatterOn=0
[Buffs]
BuffsOn=1
Buffs1=Axe of the Demolisher|Summon|Axe of the Demolisher|300
Buffs2=Bloodlust Aura|Aura
Buffs3=Breather Rk. III|end|20
Buffs4=Communion of Blood|end|50|50
Buffs5=NULL
Buffs6=NULL
Buffs7=NULL
Buffs8=NULL
Buffs9=NULL
Buffs10=NULL
Buffs11=NULL
Buffs12=NULL
Buffs13=NULL
Buffs14=NULL
Buffs15=NULL
Buffs16=NULL
Buffs17=NULL
Buffs18=NULL
Buffs19=NULL
Buffs20=NULL
RebuffOn=1
ChecKBuffsTimer=20
PowerSource=NULL
BuffsSize=20
[Melee]
AssistAt=100
MeleeOn=1
FaceMobOn=1
MeleeDistance=75
StickHow=loose
AutoFireOn=0
BeforeCombat=Kick in the Shins RK. II
UseMQ2Melee=1
[AE]
AEOn=1
AERadius=45
AE1=War cry of the Braxi
AE2=Arcslice Rk. II|99
AE3=NULL
AE4=NULL
AE5=NULL
AE6=NULL
AE7=NULL
AE8=NULL
AE9=NULL
AE10=NULL
AE11=NULL
AE12=NULL
AE13=NULL
AE14=NULL
AE15=NULL
AE1=NULL
AE2=NULL
AESize=10
[DPS]
DPSOn=2
DPSSkip=1
DPSInterval=0
DPS1=NULL
DPS2=Disconcerting Discipline Rk. III|99
DPS3=Demolishing Volley Rk. III|99
DPS4=Demolishing Frenzy Rk. III|99
DPS5=Axe of the Aeons Rk. III|99
DPS6=Demolishing Axe Throw Rk. III|99
DPS7=Dichotomic Rage|90
DPS8=Sapping Strikes|99
DPS9=Bubbling Rage Rk. III|99
DPS10=Phantom Assailant RK. III|99
DPS11=Banestrike|99
DPS12=Blinding Axe|99
DPS13=Amplified Frenzy RK. III|99
DPS14=Bubbling Rage RK. III|99
DPS15=Frenzy|30
DPS16=NULL
DPS17=NULL
DPS18=NULL
DPS19=NULL
DPS20=NULL
DebuffAllOn=0
DPS2=NULL
DPS7=NULL
DPSSize=20
[Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=0
Heals1=NULL
Heals2=NULL
Heals3=NULL
Heals4=NULL
Heals5=NULL
XTarHeal=0
HealGroupPetsOn=0
XTarHeal2=0
HealsSize=5
[Cures]
CuresOn=0
Cures=NULL
Cures1=NULL
Cures2=NULL
Cures3=NULL
Cures4=NULL
Cures5=NULL
CuresSize=5
[Burn]
BurnText=Decepticons Attack
Burn10=Frenzied Resolve Discipline RK. III
Burn11=Savage Spirit
Burn12=Reckless Abandon
Burn13=Juggernaut Surge
Burn14=Glyph of Destruction II
Burn15=Shared Cruelty RK. II
UseTribute=0
BurnAllNamed=1
Burn3=Blood Pact
Burn1=Velazul's Warmonger Coat
Burn2=Vengeful Taelosian Blood Axe
Burn4=Disconcerting Discipline RK. III
Burn5=Sapping Strikes RK. III
Burn6=Cry of Battle
Burn7=Cry Havoc
Burn8=Fundament: Second Spire of Savagery
Burn9=Bloodfury
BurnSize=15
[Pull]
PullWith=Melee
MaxRadius=350
MaxZRange=50
PullWait=0
PullRoleToggle=0
ChainPull=0
ChainPullHP=90
ChainPullPause=30|2
PullLevel=0|0
PullPath=NULL
[AFKTools]
AFKHelp=AFKGMAction=0 Off, 1 Pause Macro, 2 End Macro, 3 Unload MQ2, 4 Quit Game
AFKToolsOn=0
AFKGMAction=1
AFKPCRadius=150
CampOnDeath=0
ClickBacktoCamp=0
[Merc]
Help=To use: Turn off Auto Assist in Manage Mercenary Window
MercOn=0
MercAssistAt=92
[Aggro]
AggroOn=0
Aggro1=NULL
Aggro2=NULL
Aggro3=NULL
Aggro4=NULL
Aggro5=NULL
AggroSize=5
[SpellSet]
LoadSpellSet=0
SpellSetName=KissAssist
[GMail]
GMailHelp=Events currently support - Dead,GM,Level,Named,Leftgroup
GMailOn=0
GMailSize=5
GMail1=NULL
GMail2=NULL
GMail3=NULL
GMail4=NULL
GMail5=NULL

- - - Updated - - -

How can we make the loop with logging the accounts out and have them in on a timer until the lockout is up?
A solid loop seems a bit risky to chain. After plugging in the spells etc the targeting was buttery smooth and very well scripted , props and ty so much. One of my melee's keep attacking the quest npc in DH, if i set the assist to 99 vs 100 that should fix the issue right?
 
Last edited:
Release Berserker Macro

Users who are viewing this thread

Back
Top
Cart