| magebot.mac
| Last update 8/18/2009
| slash commands:
| /setma name - sets main assist
| /setsa name - sets secondary assist
| /debuff on|off - turns auto debuffing on or off
| /anchor # - sets the leash length when using an anchor
| /minhp # - sets the minimum hp % that you'll begin nuking at
| /radius # - sets the distance at which you'll engage
| /nuketype fire|magic|bolt [spellname] - sets your current nuke to the specified type
| /ds on|off - turns group ds on or off
| /pettype ear|air|fir|wat
| /nukebranch Fire|Magic|Bane|Rain|Beam|Standard
#include spell_routines.inc
#include Wait4Rez.inc
#include events.inc
#include general2.inc
#include aapurchase.inc
#include Ninjadvloot.inc
#include ItemBuff.inc
#turbo 40
#chat group
#chat tell
#chat chat
#chat say
#event Irc "#1# tells the raid, '#2#'"
#event ChatTell "#1# told you, '#2#'"
#event IRC "<#1#> #2#"
#event DoTell "#1# tells you, '#2#'"
#event DoTell "#1# told you, '#2#'"
#event Gate "#1# gates#*#"
#event PetWeps "#1# #*#'#*#pet weps#*#'"
#event RageOff "#*#is no longer enraged#*#"
#event RageOn "#*#has become ENRAGED#*#"
#event Talk "<#1#> #2#"
#event Invite "#1# invites you to join a group."
#event GiftofMana "You have been granted a gift of amazing exquisite radiant mana!"
#event FlameOfPower "#*#small flames dance#*#"
#event Burninate "#*#Max Burn#*#"
#event nukebranch "[MQ2] nukebranch #1#"
#event CoH "#1# tells #2#, 'coh'"
#event CoH "#1# tells #2#, 'coh #3#'"
#event UnstableCharge "#*##1# is afflicted by an unstable charge.#*#"
Sub Main
/echo Startin Up
/declare INIFile string outer Auto_${Me.CleanName}
/call SetupAdvLootVars
/call GeneralDeclares
/call GeneralDeclares2
/call IniDeclares
/call IntializeItemBuff
/call AAInit
/declare i int local
/declare j int local
/declare oldTarget int local
/declare tempTimer timer local 0
/varset castSub CheckForAdds
/if (${UseIRC} && !${Irc} && !${irctimer}) /call Irc
/echo NameList: ${NameList}
:wait_for_target
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if (!${EQBC.Connected}) /bccmd reconnect
/if (${DoLeash} && !${DoLeashToon}) /call Leash
/if (${DoLeashToon}) /call DoLeashPerson
/if (!${CheckExpTimer}) /call AutoAdjustExp
/if (${Me.PctMana}<85 && !${Me.Sitting} && !${Me.Moving} && !${Me.Casting.ID} && !${Me.Combat}) /sit
/varset MacroState WaitForTarget1
/doevents
/if (!${petSpamTimer}) {
/pet ghold on
/varset petSpamTimer 50
}
/if (${DoLeash} && !${DoLeashToon}) /call Leash
/if (${DoLeashToon}) /call DoLeashPerson
/if ( ${nukeMode} || ${useDebuff} ) /echo Waiting for target...
/call CheckRods
/if (${DoLoot} && !${Me.Moving} && !${SpawnCount[npc radius 30]} ) /call LootMobs
/if (${Me.PctMana}<85 && !${Me.Sitting} && !${Me.Moving} && !${Me.Casting.ID} && !${Me.Combat}) /sit
/varset validTarget 0
/if ( ${NukeLine}==7 ) /call Offtank
:wait_for_target2
/varset MacroState WaitForTarget2
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/doevents
/if (${following}) /goto :wait_for_target2
/if (${DoLoot} && !${Me.Moving} && !${SpawnCount[npc radius 75]} ) /call LootMobs
/call CheckPetBuffs
/if (${Me.PctMana}<85 && !${Me.Sitting} && !${Me.Moving} && !${Me.Casting.ID} && !${Me.Combat}) /sit
/call CheckRods
/if ( ${QueueCount} && !${Me.Moving} ) /call DoBuffEvents
/if (!${bufftimer} && ${usebuffs} && !${Me.Moving}) /call CheckIniBuffs
/if (${Spawn[pc ${secondAssist}].ID} && (!${Spawn[pc ${MainAssist}].ID} || ${Spawn[corpse ${MainAssist}].ID})) {
/varset mainTank ${secondAssist}
} else {
/varset mainTank ${MainAssist}
}
/if (${DoLeash} && !${DoLeashToon}) /call Leash
/if (${DoLeashToon}) /call DoLeashPerson
/if ( !${Corpse.Open} && ${Spawn[${MainAssist}].NearestSpawn[npc radius ${Math.Calc[${minRadius}*2]}].ID} && ( ${nukeMode} || ${useDebuff} ) ) {
/if (${Me.Casting.ID}) /call WaitCast
/assist ${mainTank}
/varset oldTarget ${Target.ID}
/varset tempTimer 5
:wait_for_assist1
/varset MacroState WaitForAssist1
/if (${DoLeash} && !${DoLeashToon}) /call Leash
/if (${DoLeashToon}) /call DoLeashPerson
/doevents
/if (${following}) /goto :wait_for_assist1
/call CheckRods
/doevents
/if (${DoLeash} && !${DoLeashToon}) /call Leash
/if (${DoLeashToon}) /call DoLeashPerson
/if (${Me.PctMana}<85 && !${Me.Sitting} && !${Me.Moving} && !${Me.Casting.ID} && !${Me.Combat}) /sit
/if (${following}) /goto :wait_for_target2
/call CheckTarget
/if ( ${tempTimer} && !${validTarget} ) /goto :wait_for_assist1
}
/call CheckTarget
/if ( !${validTarget} || ( !${nukeMode} && !${useDebuff} ) ) {
/call CheckPet
/doevents
/if ( !${CheckExpTimer} ) /call AutoAdjustExp
/goto :wait_for_target2
}
/echo Target Aquired >> ${Target.DisplayName} <<
/varset petAttacking false
/varset engaged 0
/varset nukeWaitTimer 0
/varset mobID ${Target.ID}
/varset mobHPStart ${Target.PctHPs}
/call UpdateMobList
/call AddToList mobList ${mobID}
/varset nukeWaitTimer 0
/if ( ${Defined[waitTimer${mobID}]} ) /deletevar waitTimer${mobID}
/declare waitTimer${mobID} int outer -1
/varset newAdds 0
}
:nuke_loop
/if (${DoLeash} && !${DoLeashToon}) /call Leash
/if (${DoLeashToon}) /call DoLeashPerson
/varset MacroState NukeLoop
/varset addIndex 1
/doevents
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
:check_add_loop
/doevents
/call CheckForAdds
/if ( ${addIndex}>1 ) /goto :check_add_loop
/call CheckPet
/if ( !${Spawn[${mobID}].Type.Equal[NPC]} && ( !${Spawn[${mobID}].Type.Equal[pet]} || ${Spawn[${mobID}].Master.Type.Equal[pc]} ) ) {
/echo Target Dead!
/varset mobID 0
/goto :wait_for_target
}
/target id ${mobID}
/if ( ( ${Target.PctHPs}>${minHP} && ${waitTimer${mobID}} ) || !${assistWaitTimer} ) {
/if ( ${Spawn[pc ${secondAssist}].ID} && ( !${Spawn[pc ${MainAssist}].ID} || ${Spawn[corpse ${MainAssist}].ID} ) ) {
/varset mainTank ${secondAssist}
} else {
/varset mainTank ${MainAssist}
}
/assist ${mainTank}
/varset tempTimer 8
:wait_for_assist
/if (${Me.PctMana}<85 && !${Me.Sitting} && !${Me.Moving} && !${Me.Casting.ID} && !${Me.Combat}) /sit
/doevents
/call CheckPet
/if ( ${tempTimer} && ${Target.ID}==${mobID} ) /goto :wait_for_assist
/if ( ${Target.ID} && ${Target.ID}!=${mobID} ) /goto :wait_for_target
/varset assistWaitTimer 5s
/goto :nuke_loop
}
/if ( !${engaged} ) {
/varset engaged 1
/echo Engaging >> ${Target.DisplayName} <<
}
/if ( ${Me.Pet.ID} && !${petAttacking} && ${Target.PctHPs}<=${SendPetPerc} ) {
/pet attack
/varset petAttacking true
|/if (${Me.Pet.Following.ID} && (${Math.Calc[${Target.Heading.DegreesCCW}-${Me.Pet.Heading.DegreesCCW}]}>90 || ${Math.Calc[${Target.Heading.DegreesCCW}-${Me.Pet.Heading.DegreesCCW}]}<-90 )) /multiline ; /face fast heading ${Math.Calc[${Target.Heading.DegreesCCW}-180]} ; /alt act 3816
}
/call CheckPetBuffs
/call CheckRods
/if (${Me.PctMana}<85 && !${Me.Sitting} && !${Me.Moving} && !${Me.Casting.ID} && !${Me.Combat}) /sit
/if ( ${useDebuff} && ${Target.LineOfSight} && ${Target.PctHPs}<=99 && ( ${Target.Type.Equal[NPC]} || ${Target.Type.Equal[pet]} ) ) /call DebuffMobs
/varset MacroState Blast
/if ( ${NukeLine}==7 ) /call Offtank
/if (${nukeMode} && ${Target.LineOfSight} && ${Target.PctHPs}<=${minHP} && !${Me.TargetOfTarget.Name.Equal[${Me.Name}]} && (${Me.PctMana}>=${nukeMana} || ${nukeMode}==2) && (${Target.Type.Equal[NPC]} || ${Target.Type.Equal[pet]} && ${Target.Master.Type.Equal[NPC]})) {
/echo HERE
/if (!${Me.Pet.Target.ID} && ${Me.Pet.ID}) /pet attack
/if (${Me.AltAbilityReady[Banestrike]}) /alt activate 15073
/if (${NameList.Find[${Target.CleanName}]} && ${Target.PctHPs}<${WhenToBurn}) /call NamedBurn
/echo ${Target.CleanName} is NOT a named! ${NameList.Find[${Target.CleanName}]}
/if (${NukeLine}==1) /call FireBranch
/if (${NukeLine}==2) /call MagicBranch
/if (${NukeLine}==3) /call BaneBranch
/if (${NukeLine}==4) /call RainBranch
/if (${NukeLine}==5) /call BeamBranch
/if (${NukeLine}==6) /call MageDPS
/if (${NukeLine}==7) /call Offtank
}
/doevents
/delay 1
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if (${Me.PctMana}<85 && !${Me.Sitting} && !${Me.Moving} && !${Me.Casting.ID} && !${Me.Combat}) /sit
/goto :nuke_loop
/return
Sub DebuffMobs
/declare i int local
/declare tempID string local
/if ( ${mobList.Find[[]} ) {
/for i 1 to ${mobList.Count[[]}
/if (!${Me.SpellReady[${malosiniaSpell}]}) /return
/if ( ${mobList.Find[[]}>1 ) /varset mobList ${mobList.Right[-${Math.Calc[${mobList.Find[[]}-1]}]}
/varset tempID ${mobList.Arg[${i},[].Left[-1]}
/if ( !${Defined[maloTimer${tempID}]} ) {
/if ( !${Spawn[${tempID}].Type.Equal[npc]} ) {
/declare maloTimer${tempID} int outer -1
} else /if ((!${waitTimer${tempID}} && ( ${maloTimer${mobID}} || ${waitTimer${mobID}} ) ) || ${tempID}==${mobID}) {
/call UpdateMobList
/target id ${tempID}
/call Malo
}
}
/next i
}
/return
Sub Malo
/declare tempID int local ${Target.ID}
/if ( !${Defined[maloResists${tempID}]} ) /declare maloResists${tempID} int outer 0
/if ( ${maloResists${tempID}}==${resistsTillMala} ) /call Cast "${malaSpell}" ${malaType} 5s CheckPet
/if ( ${maloResists${tempID}}==${resistsTillQuit} ) {
/deletevar maloTimer${tempID}
/declare maloTimer${tempID} int outer -1
/return
}
/call Cast "${malosiniaSpell}" ${malosiniaType} 0 CheckPet
/if ( !${Defined[maloTimer${tempID}]} ) /declare maloTimer${tempID} timer outer
/if ( ${Macro.Return.Equal[CAST_SUCCESS]} ) {
/varset maloTimer${tempID} 25m | ${maloDuration}
/varset maloResists${tempID} 0
} else /if ( ${Macro.Return.Equal[CAST_OUTOFMANA]} || ${Macro.Return.Equal[CAST_OUTOFRANGE]} || ${Macro.Return.Equal[CAST_CANNOTSEE]} ) {
/varset maloTimer${tempID} 50
} else {
/if ( ${Macro.Return.Equal[CAST_RESISTED]} ) /varcalc maloResists${tempID} ${maloResists${tempID}}+1
/varset maloTimer${tempID} 1
}
/return ${Macro.Return}
Sub CheckPet
/doevents
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if ( ${Zone.ID}!=${currentZone} ) {
/varset currentZone ${Zone.ID}
/varset mobList
/varset addList
/varset buffQueue
/varset mobID 0
/varset petID 0
| /squelch alert clear 6
/call ClearMobList
}
/call CheckForAdds
/declare i int local
/declare tempID int local
/if ( ${petOff} && ${Me.Pet.ID} ) {
/varset petOff 0
}
/if ( ${Spawn[${petID}].Type.Equal[NPC]} && !${petOff} ) {
/echo Pet Off!
/echo Pet Off!
/varset petAttacking false
/varset petOff 1
}
/if ( ${petOff} && ${Me.Casting.ID} && !( ${Me.Casting.Name.Equal[malosinia]} && ${Target.ID}==${petID} ) && !${Me.Casting.Name.Equal[Elemental Silence]} && !${Me.Casting.Name.Equal[call of the arch mage]} ) /call Interrupt
/doevents gate
/doevents rageon
/doevents rageoff
/doevents setvar
/if ( ${castWaitTime}>5 ) /doevents chat
/return
Sub CheckRods
/varset MacroState CheckRods
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if ( ${useMount} && !${Me.Mount.ID} ) /call CastItemClicky "${mountItem}"
/if ( ${Me.AltAbility[Elemental Form: Water]} && !${Me.State.Equal[MOUNT]} && !${Me.Buff[Elemental Form: Water].ID}) /call Cast "Elemental Form: Water" alt
/if (!${FindItem[${ParadoxRodName}].ID} && ${Me.PctMana}>=10) {
/target id ${Me.ID}
/delay 1s ${Target.ID}==${Me.ID}
/echo Casting a new Nuke Rod ${ParadoxRodName} - ${Bool[${FindItem[${ParadoxRodName}]}]}
/call Cast "${ParadoxSpell}" ${ParadoxSpellType}
}
/if (!${FindItem[${OrbName}].ID} && ${Me.PctMana}>=10) {
/target id ${Me.ID}
/delay 1s ${Target.ID}==${Me.ID}
/echo Casting a new Nuke Orb ${OrbName} - ${Bool[${FindItem[${OrbName}]}]}
/call Cast "${OrbSpell}" ${OrbSpellType}
}
/if (${Cursor.ID}) {
/autoinventory
/delay 2s !${Cursor.ID}
}
/if (!${FindItem[${ModRodName}].ID}) {
/echo I need a mod rod. FindItem[${ModRodName}]: ${FindItem[${ModRodName}].ID}
/target id ${Me.ID}
/delay 10s ${Target.ID}==${Me.ID}
/alt activate 598
/delay 2s ${Me.Casting.ID}
/delay 10s !${Me.Casting.ID}
/delay 20s ${Cursor.Name.Equal[${ModRodName}]}
/if (${Cursor.Name.Equal[${ModRodName}]}) /autoinventory
}
/if (${Cursor.ID}) {
/autoinventory
/delay 20s !${Cursor.ID}
}
/if (!${FindItem[${SelfRodName}].ID} && !${Cursor.Name.Equal[${SelfRodName}]}) {
/call Cast "${SelfRodSpell}" gem6
/delay 2s ${Cursor.Name.Equal[${SelfRodName}]}
}
/if (${Cursor.ID}) {
/autoinventory
/delay 2s !${Cursor.ID}
}
/if (${Me.PctMana}<20 && ${Me.AltAbilityReady[Mana Reserve]}) /alt act 2065
/if (${FindItem[${ModRodName}].ID} && !${FindItem[${ModRodName}].Timer} && ${Me.PctHPs}>50 && ${Me.PctMana}<=90) {
/echo Need mana BISHES!!! clicking ${ModRodName}
/call CastItemClicky "${ModRodName}"
}
/if (${FindItem[${SelfRodName}].ID} && !${FindItem[${SelfRodName}].Timer} && ${Me.PctHPs}>50 && ${Me.PctMana}<=80) {
/call CastItemClicky "${SelfRodName}"
}
/if (${Me.SpellReady[${ThaumatizeSpell}]} && ${Me.PctMana}<=80) /call Cast "${ThaumatizeSpell}" gem8
/if (${Me.SpellReady[${GatherSpell}]} && ${Me.PctMana}<=70) /call Cast "${GatherSpell}" gem12
/return
Sub CheckPetBuffs
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if ( ${Me.Pet.Body.ID}==31 ) /pet get lost
/if (${Me.Pet.ID} && !${Me.PetBuff[${auraName} Effect]} && ${auraName.Equal[Rathe's Strength]}) /call cast "${auraBuff}" ${auraBuffGem}
/if ( !${petID} && ${Me.Pet.ID} ) /varset petID ${Me.Pet.ID}
/if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400 ) /call SumPet
/if ( ${Me.Pet.ID} ) {
/if ( !${Me.Aura[1].Equal[${auraName}]} ) /call cast "${auraName}" ${auraBuffGem}
/delay 5s !${Me.Casting.ID}
/if ( !${Me.PetBuff[${petHaste}]} && !${Me.PetBuff[call of the arch mage]} && ${Me.Pet.Distance3D}<=100 ) /call Cast "${petHaste}" ${petHasteType} 2s
/delay 5s !${Me.Casting.ID}
/if ( !${Target.ID} && !${Me.Buff[${SiphonBuffName}].ID} && !${Me.PetBuff[call of the arch mage]} && !${Me.Buff[Mental Vivisection Recourse].ID} && !${Me.Buff[Mental Vivisection Recourse Rk. II].ID} && !${Me.Buff[Mental Vivisection Recourse Rk. III].ID} && !${Me.Buff[Mind Decomposition Recourse].ID} && !${Me.Buff[Mind Decomposition Recourse Rk. II].ID} && !${Me.Buff[Mind Decomposition Recourse Rk. III].ID} && ${Me.Pet.ID} && ${Me.Pet.Distance3D}<=100 && ${Me.Book[${siphonSpell}]} ) /call cast "${siphonSpell}" gem8 0 CheckPet
/if ( !${Me.PetBuff[${PetProc}]} && !${Me.PetBuff[call of the arch mage]} ) /call cast "${PetProc}" gem8 2s
/delay 5s !${Me.Casting.ID}
/if ( !${Me.PetBuff[Grounded Stance]} && !${Me.PetBuff[${PetRune}]} && ${PetTank} && ${Me.SpellReady[${PetRune}]}) /call cast "${PetRune}" gem6 2s
/delay 5s !${Me.Casting.ID}
/if ( !${Me.PetBuff[Elemental Conjunction]} && !${Me.PetBuff[Primal Fusion]} && !${FindItem[${EpicClick}].Timer} && ${FindItem[${EpicClick}].ID}) /call CastItemClicky "${EpicClick}"
/delay 5s !${Me.Casting.ID}
/if ( !${Me.PetBuff[${PetBlock}]} && ${PetTank} ) /call cast "${PetBlock}" gem9 2s
/delay 5s !${Me.Casting.ID}
}
/if ( ${Target.Name.Equal[${Me.Pet.Name}]} ) {
/if ( ${Spawn[${oldTarget}].ID} && ${Spawn[${oldTarget}].Dead} ) {
/target id ${oldTarget}
} else {
/keypress clear_target
}
}
/return
Sub CheckForAdds
:check_add_loop
/doevents
/if ( !${Spawn[${mobID}].Type.Equal[npc]} && !${Spawn[${mobID}].Type.Equal[pet]} ) {
/varset addIndex 1
/return
}
/varset addID ${NearestSpawn[${addIndex},npc radius ${minRadius}].ID}
/if ( ${addID} ) {
/if ( ${Spawn[${addID}].Distance3D}<=${minRadius} && ${addID}!=${petID} && ${Spawn[${addID}].LineOfSight} && ${aggroAnim.Find[|${Spawn[${addID}].Animation}|]} && ${mezTimer${addID}}!=-1 && ${Spawn[${addID}].Type.Equal[NPC]} ) {
/call AddToList mobList ${addID}
/if ( ${Macro.Return.Equal[1]} ) {
/if ( !${Defined[waitTimer${addID}]} ) /declare waitTimer${addID} timer outer ${engageDelay}
/echo Add detected! >> ${Spawn[${addID}].DisplayName} <<
}
/varset newAdds 1
}
/varcalc addIndex ${addIndex}+1
} else {
/varset addIndex 1
}
/return
Sub SumPet
/declare i int local
/varset petAttacking false
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if ( ${Me.AltAbilityReady[suspended minion]} ) /call Cast "suspended minion" alt 2s
/delay 1s ${Me.Pet.ID}
/echo #######
|/if (${Me.Pet.ID}) /return
/echo !!!!
/if (!${Me.Pet.ID}) {
/if (${PetType.Equal[air]} || ${PetType.Equal[wind]}) /call cast "${windPet}" gem6 5s
/if (${PetType.Equal[ear]} || ${PetType.Equal[earth]}) /call cast "${earthPet}" gem6 5s
/if (${PetType.Equal[wat]} || ${PetType.Equal[water]}) /call Cast "${waterPet}" gem6 5s
/if (${PetType.Equal[fir]} || ${PetType.Equal[fire]}) /call Cast "${firePet}" gem6 5s
}
/delay 10s !${Me.Casting.ID}
/if ( ${Me.State.Equal[COMBAT]} && ${Me.Pet.ID} ) {
/pet attack
/varset petAttacking true
/return
}
/echo FFFFFFF
/if (${Me.Pet.ID}) {
/tar id ${Me.Pet.ID}
/delay 5
/echo WEAPS!!
|/call SumWeps
/call Cast "${petShrinkSpell}" ${petShrinkType} 3s
/call Cast "${petShrinkSpell}" ${petShrinkType} 3s
/pet ghold on
}
/return
Sub CastItemClicky(string sItemClicky)
/declare OldItem string local
/echo Need to cast ${sItemClicky} and its Worn ${FindItem[${sItemClicky}].EffectType.Equal[Click Worn]}
/if (${FindItem[${sItemClicky}].EffectType.Equal[Click Worn]} && ${FindItem[${sItemClicky}].InvSlot}) {
/varset OldItem ${Me.Inventory[${FindItem[${sItemClicky}].WornSlot[1].ID}].Name}
/exchange "${sItemClicky}" ${FindItem[${sItemClicky}].WornSlot[1].ID}
/nomodkey /itemnotify ${FindItem["${sItemClicky}"].InvSlot} rightmouseup
/delay ${FindItem[${sItemClicky}].CastTime}s
/timed 10 /exchange "${OldItem}" ${FindItem[${OldItem}].WornSlot[1].ID}
/delay 5s ${Me.Inventory[${FindItem[${OldItem}].WornSlot[1].ID}].Name.Equal[${OldItem}]}
} else {
/nomodkey /itemnotify ${FindItem[${sItemClicky}].InvSlot} rightmouseup
/delay ${FindItem[${sItemClicky}].CastTime}s
}
/return
Sub SumWeps
/varset MacroState SumWeps
/return
/echo Entering SumWeps
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if (${Target.ID}!=${Me.Pet.ID}) /target id ${Me.Pet.ID}
/if (${Target.Type.NotEqual[pet]} || !${UseSummonWeps}) /return
/if (${UseSummonWeps} && !${FindItem[Pouch of Quellious].InvSlot} && ( ${PetType.Find[wat]} || ${PetType.Find[water]} || ${PetType.Find[ear]} || ${PetType.Find[earth]} ) ) {
/target ${Me}
/delay 3 ${Me.ID}==${Target.ID}
/call Cast "${summonedWepSpell}" ${summonedWepType} 4s
/delay 4s ${Cursor.ID}
/autoinventory
/delay 1s
/exchange "Folded Pack of Manaforged Armaments" pack9
/delay 1s
/if (${Cursor.ID}) /autoinventory
/if (!${FindItem[Folded Pack of Manaforged Armaments].InvSlot}) {
/delay 1s
/return
}
/nomodkey /itemnotify ${FindItem[Folded Pack of Manaforged Armaments].InvSlot} rightmouseup
/delay 1s
/delay 10s !${Me.Casting.ID}
/delay 10s ${Cursor.ID}
/autoinventory
/delay 4s ${FindItem[Pouch of Quellious].InvSlot}
/if ( ${PetType.Find[wat]} || ${PetType.Find[water]} ) {
/nomodkey /itemnotify ${FindItem[Pouch of Quellious].InvSlot} rightmouseup
/delay 1s
/nomodkey /itemnotify ${FindItem[Summoned: Manaforged Iceblade].InvSlot} leftmouseup
/echo Giving Manaforged Iceblade to pet
/delay 3s
/call GiveToPet
/delay 2s
/nomodkey /itemnotify ${FindItem[Summoned: Manaforged Mindblade].InvSlot} leftmouseup
/delay 1s
/call GiveToPet
/delay 2s
/nomodkey /itemnotify ${FindItem[Pouch of Quellious].InvSlot} leftmouseup
/delay 1s
/if ( ${Cursor.Name.Equal[Pouch of Quellious]} ) /destroy
} else {
/if ${UseSummonWeps} && ( ${PetType.Find[ear]} || ${PetType.Find[earth]} ) ) {
/declare i int local
/nomodkey /itemnotify ${FindItem[Pouch of Quellious].InvSlot} rightmouseup
/echo opening bag!!
/for i 1 to 2
/delay 1s
/nomodkey /itemnotify ${FindItem[Summoned: Manaforged Ragesword].InvSlot} leftmouseup
/delay 1s
/call GiveToPet
/delay 2s
/next i
/nomodkey /itemnotify ${FindItem[Pouch of Quellious].InvSlot} leftmouseup
/delay 1s
/if ( ${Cursor.Name.Equal[Pouch of Quellious]} ) /destroy
}
}
/return
Sub GiveToPet
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/declare i int local
/varset i 1
/echo Giving weapon to pet
/if (${Target.ID}!=${Me.Pet.ID}) {
/echo Targeting pet!
/target id ${Me.Pet.ID}
/delay 1s ${Target.ID}==${Me.Pet.ID}
}
:give_item
/delay 5 ${Cursor.ID}
/if (${Cursor.ID} && !${Window[GiveWnd].Child[GVW_MyItemSlot3].Tooltip.Length}>0 && ${Me.Pet.ID}) {
/if ( ${Cursor.Name.Find[summoned:]} ) {
/echo HERE!!!
/nomodkey /click left target
/delay 1s ${InvSlot[trade${i}].Item.ID}
} else {
/autoinventory
}
/goto :give_item
}
/for i 0 to 3
/if (${Window[GiveWnd].Child[GVW_MyItemSlot${i}].Tooltip.Length}>0 && !${Window[GiveWnd].Child[GVW_MyItemSlot${i}].Tooltip.Find[Summoned:]}) {
/echo yyyyy
/notify GiveWnd GVW_Cancel_Button leftmouseup
}
/next i
/if ( ${Window[GiveWnd].Open} ) {
/echo zzzzzz
/notify GiveWnd GVW_Give_Button leftmouseup
/delay 5s !${Window[GiveWnd].Open}
}
/if ( ${Window[InventoryWindow].Open} ) /keypress inventory
/return
Sub Event_RageOn(string line)
/declare tempID int local ${Target.ID}
/if ( ${Spawn[${mobID}].ID} ) /varset tempID ${mobID}
/if ( ${line.Find[${Spawn[${tempID}].DisplayName}]} && ${Me.Pet.ID} ) {
/echo calling off pet...
/pet back off
}
/return
Sub Event_RageOff(string line)
/declare tempID int local ${Target.ID}
/if ( ${Spawn[${mobID}].ID} ) /varset tempID ${mobID}
/if ( ${line.Find[${Spawn[${tempID}].DisplayName}]} && ${Me.Pet.ID} ) {
/target id ${tempID}
/pet attack
}
/return
Sub Event_Gate(string line)
/if ( ${line.Find[${Spawn[${mobID}].DisplayName}]} && ${Me.Pet.ID} ) {
/varset mobID 0
}
/return
Sub Event_Coth(string line,string sender,string name)
/if ( !${Defined[name]} ) /declare name string local
/declare i int local
/declare inGroup bool local false
/if ( !${Spawn[pc ${name}].ID} ) {
/if ( ${Spawn[pc ${sender}].ID} ) {
/varset name ${sender}
} else {
/return
}
}
/for i 1 to 5
/if ( ${Group[${i}].Name.Find[${name}]} ) /varset inGroup true
/next i
/if ( ${inGroup} ) {
/call AddToQueue "coth,${name}"
} else /if ( ${Group.Leader.ID}==${Me.ID} ) {
/target pc ${name}
/keypress invite_follow
/delay 5s ${Group[1].Name.Equal[${name}]} || ${Group[2].Name.Equal[${name}]} || ${Group[3].Name.Equal[${name}]} || ${Group[4].Name.Equal[${name}]} || ${Group[5].Name.Equal[${name}]}
/for i 1 to 5
/if ( ${Group[${i}].Name.Equal[${name}]} ) /varset inGroup true
/next i
/if ( ${inGroup} ) /call AddToQueue "coth,${name}"
}
/return
Sub Event_Timer(string timerName,int timerValue)
/if ( !${Defined[${timerName}]} ) /return
/declare tempID int local 0
/declare oldTargetID int local ${Target.ID}
/if ( ${timerName.Left[9].Equal[maloTimer]} ) {
/varset tempID ${timerName.Right[-9]}
/if ( ${Spawn[${tempID}].Type.Equal[NPC]} ) {
/target id ${tempID}
/call Malo
} else {
/deletevar ${timerName}
}
} else {
/return ${Macro.Return}
}
/if ( ${Target.ID}==${tempID} ) {
/if ( ${Spawn[${oldTargetID}].ID} ) {
/target id ${oldTargetID}
} else {
/keypress clear_target
}
}
/return ${Macro.Return}
Sub Event_PetWeps(string line,string sender)
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/declare tempID int local ${Spawn[pc ${sender}].Pet.ID}
/if ( !${tempID} || ${Spawn[${tempID}].Distance3D}>250 || !${Spawn[${tempID}].LineOfSight} ) /return
/target id ${tempID}
/if ( ${Stick.Status.Length} ) {
/stick 10
/delay 5s ${Target.Distance3D}<=10
} else {
/declare tempTimer timer local 5s
:move_to_pet
/face fast nolook
/keypress forward hold
/if ( ${tempTimer} && ${Target.Distance3D}<=20 ) /goto :move_to_pet
/keypress forward
}
/call SumWeps
/if ( ${Spawn[pc ${followName} radius 150].ID} && ${Stick.Status.Equal[off]} ) {
/target pc ${followName}
/stick hold 10
}
/return
Sub Event_PetType(string line,string pet)
/echo set: PetType ${pet}
/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 ( ${value.Equal[fir]} && ${PetType.Equal[fir]} || ${value.Equal[fire]} && ${PetType.Equal[fire]} ) /return
/if ( ${value.Equal[wat]} && ${PetType.Equal[wat]} || ${value.Equal[water]} && ${PetType.Equal[water]} ) /return
/if ( ${value.Equal[air]} && ${PetType.Equal[air]} || ${value.Equal[wind]} && ${PetType.Equal[wind]}) /return
/if ( ${value.Equal[ear]} && ${PetType.Equal[ear]} || ${value.Equal[earth]} && ${PetType.Equal[earth]}) /return
/if ( ${Defined[${varName}]} && ${value.Equal[ear]} || ${value.Equal[air]} || ${value.Equal[wat]} || ${value.Equal[fir]} || ${value.Equal[earth]} || ${value.Equal[wind]} || ${value.Equal[water]} || ${value.Equal[fire]} ) {
/varset ${varName} ${value}
/popup ${varName} is set to ${value} now.
/ini "${iniName}" Settings ${varName} "${value}"
/return
} else /if ( ${Defined[${varName}]} && !${varName.Equal[PetType]} ) {
/varset ${varName} ${value}
/popup ${varName} is set to ${value} now.
/ini "${iniName}" Settings "${varName.Left[1].Upper}${varName.Right[-1]}" "${value}"
/echo part2, /ini "${iniName}" Settings "${varName.Left[1].Upper}${varName.Right[-1]}" "${value}"
}
/return**|
Sub Event_Invite(string line,string sender)
/if (${announce}) /echo i've been invited by ${sender}
/declare Master string local
/varset Master ${Ini[${iniName},Settings,MasterList,NOTFOUND]}
/if (${Master.Find[${sender}]}) /squelch /invite
/return
Sub Event_UnstableCharge(string line, string sender)
/rs ${sender} needs Cure!
/return
Sub Event_Burninate
/call NamedBurn
/return
Sub NamedBurn
/varset OldState ${MacroState}
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/varset MacroState NamedBurn
/echo Named is here, Burn Baby Burn! Raging Pet away!
/if ( ${Target.LineOfSight} && ${Target.Type.Equal[NPC]} ) {
/declare MyTarget int local
/varset MyTarget ${Target.ID}
/pet attack
/delay 1s
/varset MacroState NamedBurnLoop
:namedburnloop
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /return
/if (${Me.AltAbilityReady[Banestrike]}) /alt activate 15073
/if (!${Me.Pet.Target.ID} && ${Me.Pet.ID}) /pet attack
/if (${Me.AltAbilityReady[Frenzied Burnout]}) {
/echo Casting Frenzied Burnout
/alt activate 60
/delay 2.5s !${Me.Casting.ID}
}
/if (${Me.AltAbilityReady[621]}) {
/echo Activating Fire Core
/alt activate 621
/delay 1s !${Me.AltAbilityReady[621]}
}
/if (${Me.AltAbilityReady[1370]}) {
/echo Activating First Spire
/alt activate 1370
/delay 1s !${Me.AltAbilityReady[1370]}
}
/if (${Me.AltAbilityReady[774]}) {
/echo Activating ${Me.AltAbility[774].Name}
/alt activate 774
/delay 1s !${Me.AltAbilityReady[774]}
}
/if (${Me.AltAbilityReady[323]}) {
/echo Activating ${Me.AltAbility[323].Name}
/alt activate 323
/delay 1s !${Me.AltAbilityReady[323]}
}
/if (${Me.AltAbilityReady[Glyph of the Cataclysm]}) /alt activate ${Me.AltAbility[Glyph of the Cataclysm].ID}
/if (${Me.AltAbilityReady[500]}) {
/echo Activating Silent Casting
/alt activate 500
/delay 3s !${Me.Casting.ID}
}
/if (${Me.SpellReady[${TwincastSpell}]}) {
/casting "${TwincastSpell}" gem0 2s CheckEvents
} else /if (${Me.AltAbilityReady[515]} && ${Me.Buff[${TwincastSpell}].ID} && !${Me.SpellReady[${TwincastSpell}]}) {
/echo Activating Improved Twincast
/alt activate 515
/delay 1s !${Me.AltAbilityReady[515]}
}
/if ( ${Me.CurrentMana}>=${Spell[${manyNuke}].Mana} && ${Me.SpellReady[${manyNuke}]}) /call CastNuke "${manyNuke}" "gem1" ${Target.ID} CheckEvents
/if (!${Me.SpellReady[${ServantNuke}]} && ${Me.SpellReady[${BurnNuke1}]} && !${Me.SpellReady[${BurnNuke2}]} && !${Me.SpellReady[${BurnNuke3}]}) /call CheckRods
/if (${Me.SpellReady[${BurnNuke1}]} && ${Me.CurrentMana}>=${Spell[${BurnNuke1}].Mana}) /call CastNuke "${BurnNuke1}" "gem1" ${Target.ID} CheckEvents
/if (${Me.SpellReady[${BurnNuke2}]} && ${Me.CurrentMana}>=${Spell[${BurnNuke2}].Mana}) /call CastNuke "${BurnNuke2}" "gem4" ${Target.ID} CheckEvents
/if (${Me.SpellReady[${BurnNuke3}]} && ${Me.CurrentMana}>=${Spell[${BurnNuke3}].Mana}) /call CastNuke "${BurnNuke3}" "gem5" ${Target.ID} CheckEvents
/if (${Target.ID}==${MyTarget} ) /goto :namedburnloop
}
/echo Named is toast, returning to ${OldState}
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/return
Sub Event_FlameOfPower
/if (${Me.GoM}) /call Event_GiftofMana
/if (!${Me.Song[Flames of Power].ID}) /return
/varset OldState ${MacroState}
/varset MacroState FlameOfPower
:stillhavepower
/if ( !${Target.Type.Equal[NPC]} ) /return
/if (${Me.Song[Flames of Power].ID} && ${Me.CurrentMana}>=${Spell[${nuke1}].Mana}) {
/call CastNuke "${nuke1}" "gem1" ${Target.ID} CheckEvents
}
/if (!${Target.ID}) /return
/if (${Me.Song[Flames of Power].ID}) /goto :stillhavepower
/echo Flame of Power Done returning to ${OldState}
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/return
Sub Event_GiftOfMana
/if (!${Me.GoM}) /return
/if (${Target.ID} == ${Me.Pet.ID}) /target id ${mobID}
/varset OldState ${MacroState}
/varset MacroState GoMSub
/echo GoM, Attempting to Send the Raging Pet or casting ${GoMNuke}!
:StayInGoM
/if (${Me.GoM} && !${ServantTimer} && ${Me.CurrentMana}>=${Spell[${ServantNuke}].Mana} ${UsePet}) {
/call Cast "${ServantNuke}" gem5 2s CheckEvents
/delay 5s !${Me.Casting.ID}
/if (!${Me.SpellReady[${ServantNuke}]}) {
/varset ServantTimer 12s
/varset ServantTimer2 12s
}
}
/if (${Me.GoM} && ${Me.AltAbilityReady[Forceful Rejuvenation]} && ${ServantTimer}>=110 ) {
/casting "Forceful Rejuvenation" alt 2s
/varset ServantTimer 0s
}
/if (${Me.GoM} && ${ServantTimer}>=40 && ${Me.CurrentMana}>=${Spell[${GoMNuke}].Mana} && ${Me.SpellReady[${GoMNuke}]}) /call Cast "${GoMNuke}" gem2 2s CheckEvents
/if (!${Target.Type.Equal[NPC]}) /return
/if (${Me.CurrentMana}<${Spell[${ServantNuke}].Mana}) /call Cast "${GoMNuke}" gem2 2s CheckEvents
/if (${Me.GoM} ) /goto :StayInGoM
/echo GoM done returning to ${OldState}
/if (${Me.State.Equal[Hover]} || ${Me.Dead}) /call Wait4Rez
/return
Sub event_nukebranch(Line, Command)
/if (!${Command.Equal[fire]} && !${Command.Equal[bane]} && !${Command.Equal[magic]} && !${Command.Equal[rain]} && !${Command.Equal[beam]} && !${Command.Equal[standard]} && !${Command.Equal[offtank]}) {
/echo Invalid selection. Valid options are Fire, Magic, Bane, Rain, Beam, or Standard (original style!) or offtank
/return
}
/ini "${iniName}" Settings NukeBranch "${Command}"
/varset NukeBranch ${Command}
/call SpellBranch
/echo Spellset changed to ${Command}
/popup NukeBranch changed to ${Command}
/return
Sub SpellBranch
/if (${NukeBranch.Equal[fire]}) {
/echo nukes set to fire
/varset NukeLine 1
/call InitializeNukes
}
/if (${NukeBranch.Equal[magic]}) {
/echo nukes set to magic
/varset NukeLine 2
/call InitializeNukes
}
/if (${NukeBranch.Equal[bane]}) {
/echo nukes set to bane
/varset NukeLine 3
/call InitializeNukes
}
/if (${NukeBranch.Equal[rain]}) {
/echo nukes set to rain
/varset NukeLine 4
/call InitializeNukes
}
/if (${NukeBranch.Equal[beam]}) {
/echo nukes set to beam
/varset NukeLine 5
/call InitializeNukes
}
/if (${NukeBranch.Equal[standard]}) {
/echo nukes set to standard
/varset NukeLine 6
/call InitializeNukes
}
/if (${NukeBranch.Equal[offtank]}) {
/echo Offtank Mode
/varset NukeLine 7
}
/return
Sub InitializeNukes
/varset MacroState InitializeNukes
/if (${NukeLine}==1 || ${NukeLine}==6) {
/varset MacroState InitializeFireOrStandard
/if (!${Me.Gem[${nuke1}]}) {
/memspell 1 "${nuke1}"
/delay 10s ${Me.Gem[${nuke1}]}
}
/if (!${Me.Gem[${nuke2}]}) {
/memspell 4 "${nuke2}"
/delay 10s ${Me.Gem[${nuke2}]}
}
/if (!${Me.Gem[${nuke3}]}) {
/memspell 5 "${nuke3}"
/delay 10s ${Me.Gem[${nuke3}]}
}
/if (!${Me.Gem[${boltNuke}]}) {
/memspell 2 "${boltNuke}"
/delay 10s ${Me.Gem[${boltNuke}]}
}
/if ( !${Me.Gem[${ServantNuke}]} ) {
/memspell 3 "${ServantNuke}"
/delay 10s ${Me.Gem[${ServantNuke}]}
}
/if ( !${Me.Gem[${manyNuke}]} ) {
/memspell 6 "${manyNuke}"
/delay 10s ${Me.Gem[${manyNuke}]}
}
/return
}
/if ( ${NukeLine}==2 ) {
/varset MacroState InitializeMagic
/if ( !${Me.Gem[${magicNuke}]} ) {
/memspell 1 "${magicNuke}"
/delay 10s ${Me.Gem[${magicNuke}]}
}
/if ( !${Me.Gem[${magicNuke2}]} ) {
/memspell 4 "${magicNuke2}"
/delay 10s ${Me.Gem[${magicNuke2}]}
}
/if ( !${Me.Gem[${malosiniaSpell}]} ) {
/memspell 5 "${malosiniaSpell}"
/delay 10s ${Me.Gem[${malosiniaSpell}]}
}
/if ( !${Me.Gem[${ServantNuke}]} ) {
/memspell 3 "${ServantNuke}"
/delay 10s ${Me.Gem[${ServantNuke}]}
}
/return
}
/if ( ${NukeLine}==3 ) {
/varset MacroState InitializeBane
/if ( !${Me.Gem[${annihilateNuke}]} ) {
/memspell 1 "${annihilateNuke}"
/delay 10s ${Me.Gem[${annihilateNuke}]}
}
/if !${Me.Gem[${annihilateNuke2}]} ) {
/memspell 4 "${annihilateNuke2}"
/delay 10s ${Me.Gem[${annihilateNuke2}]}
}
/if ( !${Me.Gem[${malosiniaSpell}]} ) {
/memspell 5 "${malosiniaSpell}"
/delay 10s ${Me.Gem[${malosiniaSpell}]}
}
/if ( !${Me.Gem[${ServantNuke}]} ) {
/memspell 3 "${ServantNuke}"
/delay 10s ${Me.Gem[${ServantNuke}]}
}
/return
}
/if ( ${NukeLine}==4 ) {
/varset MacroState InitializeRain
/if ( !${Me.Gem[${rainNuke1}]} ) {
/memspell 1 "${rainNuke1}"
/delay 10s ${Me.Gem[${rainNuke1}]}
}
/if ( !${Me.Gem[${rainNuke2}]} ) {
/memspell 4 "${rainNuke2}"
/delay 10s ${Me.Gem[${rainNuke2}]}
}
/if ( !${Me.Gem[${malosiniaSpell}]} ) {
/memspell 5 "${malosiniaSpell}"
/delay 10s ${Me.Gem[${malosiniaSpell}]}
}
/if ( !${Me.Gem[${ServantNuke}]} ) {
/memspell 3 "${ServantNuke}"
/delay 10s ${Me.Gem[${ServantNuke}]}
}
/return
}
/if ( ${NukeLine}==5 ) {
/varset MacroState InitializeBeam
/if ( !${Me.Gem[${BeamNuke}]} ) {
/memspell 1 "${BeamNuke}"
/delay 10s ${Me.Gem[${BeamNuke}]}
}
/if ( !${Me.Gem[${malosiniaSpell}]} ) {
/memspell 5 "${malosiniaSpell}"
/delay 10s ${Me.Gem[${malosiniaSpell}]}
}
/if ( !${Me.Gem[${ServantNuke}]} ) {
/memspell 3 "${ServantNuke}"
/delay 10s ${Me.Gem[${ServantNuke}]}
}
/return
}
/return
Sub Irc
/Call DeclareIniVar IRCServer string Settings ""
/Call DeclareIniVar IRCChannel string Settings ""
/if (!${Irc}) {
/i quit
/iconnect ${IRCServer} ${IRCCchannel} ${Me}
/timed 30 /i join #${IRCChannel}
/varset irctimer 30s
}
/return
Sub CheckEvents
/if (${Target.Type.Equal[Corpse]}) /squelch /target clear
/doevents
/doevents IRC
/doevents Chat
/doevents tell
/doevents CoH
/if (${Me.Casting.ID} && !${Target.ID}) /call Interrupt
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/return
Sub MageDPS
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if ( ${Me.Song[Gift of Amazing Exquisite Radiant Mana].ID} ) /call Event_GiftOfMana
/call CheckRods
/varset MacroState MageDPS
/call CheckEvents
/varset MacroState MageTwinCastCheck
/if ( ${Me.SpellReady[${TwincastSpell}]} && ${Me.PctMana}>=30 ) {
/casting "${TwincastSpell}" gem10 2s CheckEvents
/varset MacroState MageTwinCastCheckExit
} else {
/varset MacroState PetRejuv
/if ( ${Me.Pet.PctHPs}<=95 && ${PetTank} && !${Me.PetBuff[${PetRenewalSpell}]} ) {
/call Cast "${PetRenewalSpell}" ${PetRenewalType} 2s CheckEvents
/varset MacroState PetRejuvExit
} else {
/varset MacroState CheckHealPet
/if ( ${Me.Pet.PctHPs}<=60 && ${PetTank} ) {
/call Cast "${PetHealSpell}" ${PetHealType} 2s CheckEvents
/varset MacroState CheckHealPetExit
} else {
/varset MacroState IceSliver
/if ( !${Me.SpellReady[${nuke2}]} && ${FindItem[${ParadoxRodName}].ID} && !${Bool[${FindItem[${ParadoxRodName}].Timer}]} ) {
/echo Casting: ${ParadoxRodName} on >> ${Target.CleanName} <<
/call PotionCast "${ParadoxRodName}" ${ParadoxPotionSlot}
/varset MacroState IceSliverExit
} else {
/varset MacroState Annihilate
/if ( !${Me.SpellReady[${nuke1}]} && !${Me.SpellReady[${nuke2}]} && ${Me.CurrentMana}>=${Spell[${nuke3}].Mana} && ${Me.SpellReady[${nuke3}]} ) /call CastNuke "${nuke3}" "gem5" ${Target.ID} CheckEvents
/if ( ${Me.Gem[${annihilateNuke}]} && ${Me.CurrentMana}>=${Spell[${annihilateNuke}].Mana} && ${Me.SpellReady[${annihilateNuke}]} && ( ${Target.Body.ID}==24 || ${Target.Body.ID}==5 )) /call CastNuke "${annihilateNuke}" "gem5" ${Target.ID} CheckEvents
/if ( ${Me.Gem[${annihilateNuke2}]} && !${Me.SpellReady[${annihilateNuke}]} && ${Me.SpellReady[${annihilateNuke2}]} && ( ${Target.Body.ID}==24 || ${Target.Body.ID}==5 )) /call Cast "${annihilateNuke2}" gem1 2s CheckEvents
/if ( ${Me.CurrentMana}>=${Spell[${nuke1}].Mana} && ${Me.SpellReady[${nuke1}]}) /call Cast "${nuke1}" gem1 2s CheckEvents
/varset MacroState AnnihilateExit
/call CheckEvents
/if ( !${Me.SpellReady[${nuke1}]} && ${Me.Gem[${nuke2}]} && ${Me.CurrentMana}>=${Spell[${nuke2}].Mana} && ${Me.SpellReady[${nuke2}]} && ( ${Target.Body.ID}!=24 || ${Target.Body.ID}!=5 )) /call CastNuke "${nuke2}" "gem5" ${Target.ID} CheckEvents
/call CheckEvents
/if ( ${Macro.Return.Equal[CAST_SUCCESS]} || ${Macro.Return.Equal[CAST_RESISTED]} ) {
/if ( ${nukeMode}==1 ) {
/varcalc nukeWaitMod 2*(90 - ${Me.PctMana})
} else {
/varset nukeWaitMod 0
}
/if ( ${nukeDelay}>${nukeWaitMod} ) {
/varset nukeWaitTimer ${nukeDelay}
} else {
/varset nukeWaitTimer ${nukeWaitMod}
}
}
}
}
}
}
/if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400 ) /call SumPet
/return
Sub MagicBranch
/varset MacroState Magic
/declare MyTarget int local
/varset MyTarget ${Target.ID}
:KeepMagic
/if (${Me.AltAbilityReady[Banestrike]}) /alt activate 15073
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/call CheckRods
/if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400 ) /call SumPet
/if (${Me.GoM}) /call Event_GiftOfMana
/if (${Me.SpellReady[${TwincastSpell}]} && ${Me.PctMana}>=30) /casting "${TwincastSpell}" gem10 2s
/if ( ${Me.Pet.PctHPs}<=95 && !${Me.PetBuff[${PetRenewalSpell}]} ) /call Cast "${PetRenewalSpell}" ${PetRenewalType} 2s CheckEvents
/if ( ${dorain} && ${Target.ID}==${MyTarget} && ${Me.CurrentMana}>=${Spell[${rainNuke1}].Mana} && ${Me.SpellReady[${rainNuke1}]}) {
/delay 2s ${Me.SpellReady[${rainNuke1}]}
/call CastNuke "${rainNuke1}" "gem7" ${Target.ID} CheckEvents
}
/if ( ${Me.Gem[${magicNuke}]} && ${Me.CurrentMana}>=${Spell[${magicNuke}].Mana} && ${Me.SpellReady[${magicNuke}]} ) /call CastNuke "${magicNuke}" "gem1" ${Target.ID} CheckEvents
/delay 5s !${Me.Casting.ID}
/if ( ${Me.Gem[${magicNuke2}]} && ${Me.CurrentMana}>=${Spell[${magicNuke2}].Mana} && ${Me.SpellReady[${magicNuke2}]} && !${Me.SpellReady[${magicNuke}]} ) /call CastNuke "${magicNuke2}" "gem2" ${Target.ID} CheckEvents
/if ( ${Target.ID}==${MyTarget} ) /goto :KeepMagic
/return
Sub ForceOfElements
/if (${Me.AltAbilityReady[Force of Elements]}) {
/echo Casting Force of Elements on >> ${Target.CleanName} <<
/call cast "Force of Elements" alt
}
/return
Sub ParadoxRod
/echo Casting ${ParadoxRodName} on >> ${Target.CleanName} <<
/call PotionCast "${ParadoxRodName}" ${ParadoxPotionSlot}
/doevents
/delay 2s !${Me.Casting.ID}
/return
Sub FireBranch
/declare MyTarget int local
/varset MyTarget ${Target.ID}
:KeepFireBranch
/if (${NameList.Find[${Target.CleanName}]} && ${Target.PctHPs}<${WhenToBurn}) /call NamedBurn
/if (${Me.State.Equal[Hover]} || ${Me.Dead} ) /call Wait4Rez
/if (${Me.AltAbilityReady[Banestrike]}) /alt activate 15073
/if (!${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400) /call SumPet
/if (${Me.GoM}) /call Event_GiftOfMana
/if (${Me.Pet.Following.ID} && (${Math.Calc[${Target.Heading.DegreesCCW}-${Me.Pet.Heading.DegreesCCW}]}>90 || ${Math.Calc[${Target.Heading.DegreesCCW}-${Me.Pet.Heading.DegreesCCW}]}<-90 )) /multiline ; /face fast heading ${Math.Calc[${Target.Heading.DegreesCCW}-180]} ; /alt act 3816
/varset MacroState FireBranch
/if (!${FindItem[${ModRodName}].ID}) /call CheckRods
/if ( !${Target.ID} ) /return
/delay 2s !${Me.Casting.ID}
/if ( !${ServantTimer2} && ${Me.CurrentMana}>=${Spell[${ServantNuke}].Mana} && ${Target.ID}==${MyTarget} ${UsePet}) {
/echo tossing a servant, goodbye mobos.
/delay 5s ${Me.SpellReady[${ServantNuke}]}
/call Cast "${ServantNuke}" gem3 0s CheckEvents
/delay 5s !${Me.Casting.ID}
/if ( !${Me.SpellReady[${ServantNuke}]} ) {
/varset ServantTimer 12s
/varset ServantTimer2 12s
}
}
/if (${Me.Pet.PctHPs}<=95 && !${Me.PetBuff[${PetRenewalSpell}]} && !${Me.Buff[Twincast Rk. III].ID}) /call Cast "${PetRenewalSpell}" ${PetRenewalType} 2s CheckEvents
/if (${Me.GoM}) /call Event_GiftOfMana
/doevents
/if ( ${Spawn[${Target.ID}].NearestSpawn[6,pet radius 30].ID} && ${Me.CurrentMana}>=${Spell[${manyNuke}].Mana}) {
/if ( ${Me.CurrentMana}>=${Spell[${manyNuke}].Mana} && ${Me.SpellReady[${manyNuke}]} && ${Target.ID}==${MyTarget}) {
/doevents
/call CastNuke "${manyNuke}" "gem1" ${Target.ID} CheckEvents
}
/delay 5s !${Me.Casting.ID}
} else {
/if ( ${Me.CurrentMana}>=${Spell[${nuke1}].Mana} && ${Me.SpellReady[${nuke1}]} && ${Target.ID}==${MyTarget}) {
/echo Casting ${nuke1} on >> ${Target.CleanName} <<
/doevents
/call CastNuke "${nuke1}" "gem1" ${Target.ID} CheckEvents
/echo nuke1 ( ${nuke1} ) done
/delay 5s !${Me.Casting.ID}
}
}
/if (${Me.GoM}) /call Event_GiftOfMana
/if (!${Target.ID}) /return
/if ( ${Me.Gem[${nuke2}]} && ${Me.CurrentMana}>=${Spell[${nuke2}].Mana} && ${Me.SpellReady[${nuke2}]} && ${Target.ID}==${MyTarget} ) {
/echo Casting ${nuke2} on >> ${Target.CleanName} <<
/doevents
/call CastNuke "${nuke2}" "gem2" ${Target.ID} CheckEvents
/delay 5s !${Me.Casting.ID}
/echo nuke2 ( ${nuke2} ) done
}
/if (!${Target.ID}) /return
/if (${Me.GoM}) /call Event_GiftOfMana
/if ( ${Me.CurrentMana}>=${Spell[${nuke3}].Mana} && ${Target.ID}==${MyTarget} && ${Me.SpellReady[${nuke3}]} ) {
/echo Casting ${nuke3} on >> ${Target.CleanName} <<
/doevents
/call CastNuke "${nuke3}" "gem4" ${Target.ID} CheckEvents
/delay 5s !${Me.Casting.ID}
|/if (${Me.Pet.Following.ID} && (${Math.Calc[${Target.Heading.DegreesCCW}-${Me.Pet.Heading.DegreesCCW}]}>90 || ${Math.Calc[${Target.Heading.DegreesCCW}-${Me.Pet.Heading.DegreesCCW}]}<-90 )) /multiline ; /face fast heading ${Math.Calc[${Target.Heading.DegreesCCW}-180]} ; /alt act 3816
}
/if (!${Target.ID}) /return
/if (${Me.GoM}) /call Event_GiftOfMana
/doevents
/if (${Me.Dead}) /call Wait4Rez
/if (${Target.ID}==${MyTarget}) /goto :KeepFireBranch
/return
Sub BaneBranch
/declare MyTarget int local
/varset MyTarget ${Target.ID}
/if ( ${Me.Song[Gift of Amazing Exquisite Radiant Mana].ID} ) /call Event_GiftOfMana
:KeepBane
/if (${Me.AltAbilityReady[Banestrike]}) /alt activate 15073
/call CheckRods
/varset MacroState BaneBranch
/if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400 ) /call SumPet
/if ( ( !${Target.Body.ID}==24 || !${Target.Body.ID}==5 ) ) /nukebranch fire
/if ( ${Me.SpellReady[${TwincastSpell}]} && ${Me.PctMana}>=30 ) /casting "${TwincastSpell}" gem10 2s
/if ( ${Me.Pet.PctHPs}<=95 && !${Me.PetBuff[${PetRenewalSpell}]} ) /call Cast "${PetRenewalSpell}" ${PetRenewalType} 2s CheckEvents
/if ( ${Me.Gem[${annihilateNuke}]} && ${Me.CurrentMana}>=${Spell[${annihilateNuke}].Mana} && ${Me.SpellReady[${annihilateNuke}]} ) /call CastNuke "${annihilateNuke}" "gem1" ${Target.ID} CheckEvents
/if ( ${Me.Gem[${annihilateNuke2}]} && ${Me.CurrentMana}>=${Spell[${annihilateNuke2}].Mana} && ${Me.SpellReady[${annihilateNuke2}]} ) /call CastNuke "${annihilateNuke2}" "gem4" ${Target.ID} CheckEvents
/if ( ${Target.ID}==${MyTarget} ) /goto :KeepBane
/return
Sub RainBranch
/declare MyTarget int local
/varset MyTarget ${Target.ID}
:KeepRain
/if (${Me.AltAbilityReady[Banestrike]}) /alt activate 15073
/call CheckRods
/if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400 ) /call SumPet
/if ( ${Me.GoM} ) /call Event_GiftOfMana
/varset MacroState RainBranch
/if ( ${Me.Pet.PctHPs}<=95 && !${Me.PetBuff[${PetRenewalSpell}]} ) /call Cast "${PetRenewalSpell}" ${PetRenewalType} 2s CheckEvents
/if ( ${Me.Gem[${rainNuke1}]} && ${Me.CurrentMana}>=${Spell[${rainNuke1}].Mana} && ${Me.SpellReady[${rainNuke1}]} ) /call CastNuke "${rainNuke1}" "gem1" ${Target.ID} CheckEvents
/if ( ${Me.Gem[${rainNuke2}]} && ${Me.CurrentMana}>=${Spell[${rainNuke2}].Mana} && ${Me.SpellReady[${rainNuke2}]} ) /call CastNuke "${rainNuke2}" "gem1" ${Target.ID} CheckEvents
/if ( ${Target.ID}==${MyTarget} ) /goto :KeepRain
/return
Sub BeamBranch
/declare MyTarget int local
/varset MyTarget ${Target.ID}
:KeepBeam
/if (${Me.AltAbilityReady[Banestrike]}) /alt activate 15073
| /call CheckBuffs
/face fast
/if (!${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400) /call SumPet
/if (${Me.GoM}) /call Event_GiftOfMana
/varset MacroState BeamBranch
/if ( ${Me.Pet.PctHPs}<=95 && !${Me.PetBuff[${PetRenewalSpell}]} ) /call Cast "${PetRenewalSpell}" ${PetRenewalType} 2s CheckEvents
/if ( ${Me.Gem[${BeamNuke}]} && ${Me.CurrentMana}>=${Spell[${BeamNuke}].Mana} && ${Me.SpellReady[${BeamNuke}]} ) /call CastNuke "${BeamNuke}" "gem1" ${Target.ID} CheckEvents
/if ( ${Target.ID}==${MyTarget} && ${Target.ID}<>${Me.Pet.ID} ) /goto :KeepBeam
/return
Sub Offtank
:Offtank
/varset MacroState Offtank1
/if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=400 ) /call SumPet
/delay 5s !${Me.Casting.ID}
/delay 2s ${Me.SpellReady[${PetRenewalSpell}]}
/if ( !${Me.PetBuff[${PetRenewalSpell}]} ) /call Cast "${PetRenewalSpell}" ${PetRenewalType} 2s
/delay 5s !${Me.Casting.ID}
/delay 2s ${Me.SpellReady[${PetHealSpell}]}
/if ( ${Me.Pet.PctHPs} <= 99 ) /call Cast "${PetHealSpell}" gem5 2s
/delay 5s !${Me.Casting.ID}
/delay 2s ${Me.SpellReady[${PetRune}]}
/if ( !${Me.PetBuff[${PetRune}]} ${Me.Pet.PctHPs} >= 50) /call Cast "${PetRune}" gem6 2s
/delay 5s !${Me.Casting.ID}
/delay 2s ${Me.SpellReady[${PetBlock}]}
/if ( !${Me.PetBuff[${PetBlock}]} && ${Me.Pet.PctHPs} >= 80) /call Cast "${PetBlock}" gem9 2s
/delay 5s !${Me.Casting.ID}
/if ( !${Me.PetBuff[Elemental Conjunction]} && !${Me.PetBuff[Primal Fusion]} && !${FindItem[${EpicClick}].Timer} && ${FindItem[${EpicClick}].ID}) /call CastItemClicky "${EpicClick}"
/delay 5s !${Me.Casting.ID}
/varset MacroState Offtank2
/if ( (${Me.Pet.ID} && ${Me.Pet.Following.ID}) || !${Me.Pet.ID} ) /goto :Offtank
/return
Sub PotionCast(string ItemName, int Slot)
/varset MacroState PotionCast
/if ( !${Defined[CastSlot]} ) /declare CastSlot int local ${Slot}
/varcalc Slot (${Slot}-1)
/if ( ${Window[PotionBeltWnd].Child[PW_PotionSlot${Slot}_Button].Tooltip.Equal[${ItemName}]} && !${Bool[${FindItem[${ItemName}].Timer}]} && ${Bool[${FindItem[${ItemName}]}]}) /potionbelt Activate ${CastSlot}
/return
Sub IniDeclares
/Call DeclareIniVar UseIRC string Settings 0
/if (${UseIRC}) /call Irc
/Call DeclareIniVar UseIRC string Settings 0
/Call DeclareIniVar mychannel string Settings "" /mychannel
/Call DeclareIniVar MasterList string Settings ""
/Call DeclareIniVar announce int Settings 0 /useannounce
/call DeclareIniVar WhenToBurn int Settings 80 /burn
/call DeclareIniVar dorain int Settings 0 /dorain
/call DeclareIniVar DoLeash int Settings 0
/call DeclareIniVar useEpic int Settings 1
/call DeclareIniVar MainAssist string Settings /setma
/call DeclareIniVar secondAssist string Settings /setsa
/call DeclareIniVar minRadius int Settings 150 /radius
/call DeclareIniVar engageDelay int Settings 55 /engagedelay
/call DeclareIniVar minHP int Settings 95 /minhp
/call DeclareIniVar autosit int Settings 1
/call DeclareIniVar autoBuff int Settings 1 /buff
/call DeclareIniVar useMount int Settings 1 /mount
/call DeclareIniVar useDebuff int Settings 1 /debuff
/call DeclareIniVar nukeMode int Settings 1 /nuke
/call DeclareIniVar useCharm int Settings 0 /charm
/call DeclareIniVar useDPS int Settings 0 /dps
/call DeclareIniVar usePet int Settings 1 /companion
/call DeclareIniVar privateChannel string Settings "/echo"
/call DeclareIniVar channelAnnounce int Settings 1
/call DeclareIniVar autoAnnounce string Settings 1
/call DeclareIniVar noInterrupt int Settings 0
/call DeclareIniVar useManaStone int Settings 0
/call DeclareIniVar checkNamed int Settings 0 /checknamed
/call DeclareIniVar noInvis int Settings 1
/call DeclareIniVar useManaRobe int Settings 0
/call DeclareIniVar manaRobeMode int Settings 0
/call DeclareIniVar manaRobeMinMana int Settings 10
/call DeclareIniVar manaRobeMaxMana int Settings 94
/call DeclareIniVar nukeMana int Settings 25 /nukemana
/call DeclareIniVar nukeDelay int Settings 10 /nukedelay
/call DeclareIniVar nukeMode int Settings 1 /nukemode
/call DeclareIniVar ignoreList string Settings
/call DeclareIniVar runeHP int Settings 70
/call DeclareIniVar cleanUp int Settings 0 /cleanup
/call DeclareIniVar useGroupDS int Settings 0 /ds
/call DeclareIniVar clarityBitch string Settings
/call DeclareIniVar spellSet string Settings "default"
/call DeclareIniVar maloDuration string Settings 19m
/call DeclareIniVar resistsTillMala int Settings 3
/call DeclareIniVar resistsTillQuit int Settings 4
/call DeclareIniVar NukeBranch string Settings "fire"
/call DeclareIniVar UseSummonWeps string Settings "1"
/call DeclareIniVar usegroupchat string Settings "1"
/call DeclareIniVar DoLoot int Settings "1" /doloot
/call DeclareIniVar MezSpellList string Settings "Befuddle rk. ii"
/call DeclareIniVar nuke1 string Spells "Fickle Blaze Rk. II" /nuke1
/call DeclareIniVar nuke2 string Spells "Torrid Sands Rk. II" /nuke2
/call DeclareIniVar nuke3 string Spells "Jolt of Many Rk. III" /nuke3
/call DeclareIniVar BurnNuke1 string Spells "Spear of Blistersteel" /burnnuke1
/call DeclareIniVar BurnNuke2 string Spells "Spear of Molten Steel" /burnnuke2
/call DeclareIniVar BurnNuke3 string Spells "Bolt of Molten Magma" /burnnuke3
/call DeclareIniVar magicNuke string Spells "Shock of Cineral Steel Rk. II"
/call DeclareIniVar magicNuke2 string Spells "Shock of Discordant Steel Rk. III"
/call DeclareIniVar fireNuke string Spells "Fickle Blaze Rk. II"
/call DeclareIniVar boltNuke string Spells "Bolt of Molten Scoria Rk. II"
/call DeclareIniVar manyNuke string Spells "Jolt of Many Rk. III"
/call DeclareIniVar rainNuke1 string Spells "Deluge of Thunderbolts Rk. II"
/call DeclareIniVar rainNuke2 string Spells "Shock of Discordant Steel Rk. II"
/call DeclareIniVar FireRainNuke string Spells "Rain of molten Scoria Rk. II"
/call DeclareIniVar BeamNuke string Spells "Beam of Molten Scoria Rk. II"
/call DeclareIniVar annihilateNuke string Spells "Annihilate the Anomalous"
/call DeclareIniVar annihilateNuke2 string Spells "Annihilate the Aberrant"
/call DeclareIniVar ServantNuke string Spells "Rumbling Servant Rk. II"
/call DeclareIniVar shielding string spells "Prime Shielding Rk. II"
/call DeclareInivar GoMNuke string Spells "Bolt of Molten Scoria Rk. II"
/call DeclareIniVar windPet string Spells "Aspect of Air"
/call DeclareIniVar earthPet string Spells "Aspect of Earth"
/call DeclareIniVar firePet string Spells "Aspect of Fire"
/call DeclareIniVar waterPet string Spells "Aspect of Water"
/call DeclareIniVar malosiniaSpell string Spells "Malosenea Rk. II"
/call DeclareIniVar malosiniaType string Spells "gem6"
/call DeclareIniVar malaSpell string Spells "Malosinia"
/call DeclareIniVar malaType string Spells "item"
/call DeclareIniVar summonedWepSpell string Spells "Summon Prime Armaments"
/call DeclareIniVar summonedWepType string Spells "gem8"
/call DeclareIniVar summonedBeltSpell string Spells "Summon Plate of the Prime"
/call DeclareIniVar summonedBeltType string Spells "gem8"
/call DeclareIniVar summonedMaskSpell string Spells "Muzzle of Mardu"
/call DeclareIniVar summonedMaskType string Spells "gem8"
/call DeclareIniVar groupDSSpell string Spells ""
/call DeclareIniVar UseBurstDS int settings 0
/call DeclareIniVar singleDSSpell string Spells ""
/call DeclareIniVar siphonSpell string Spells "Elemental Symbiosis Rk. II"
/call DeclareIniVar runeSpell string Spells " "
/call DeclareIniVar runeType string Spells " "
/call DeclareIniVar pethpSpell string Spells " "
/call DeclareIniVar pethpBuff string Spells "item"
/call DeclareIniVar pethpType string Spells ""
/call DeclareIniVar petHaste string Spells "Burnout VIII"
/call DeclareIniVar petHasteType string Spells "gem8"
/call DeclareIniVar petShrinkSpell string Spells "Tiny Companion"
/call DeclareIniVar petShrinkType string Spells "item"
/call DeclareIniVar PetProc string Spells "Iceflame Efflux Rk. II"
/call DeclareIniVar PetProcType string Spells "gem8"
/call DeclareIniVar SendPetPerc int Settings 99
/call DeclareIniVar EpicClick string spells "Focus of Primal Elements"
/call DeclareIniVar EpicPetBuff string Spells "Primal Fusion"
/call DeclareIniVar rodSpell string Spells "Wand of Ethereal Transvergence"
/call DeclareIniVar rodType string Spells "gem6"
/call DeclareIniVar ModRodPotSlot string Spells "2"
/call DeclareIniVar PetTank int Settings 1 /pettank
/call DeclareIniVar PetType string Settings "air" /pettype
/call DeclareIniVar PetRune string spells "Grounded Stance Rk. II"
/call DeclareIniVar PetBlock string spells "Aegis of Kildrukaun"
/call DeclareIniVar PetHealSpell string Spells "Renewal of Cadwin Rk. II"
/call DeclareIniVar PetHealType string Spells "gem9"
/call DeclareIniVar TwincastSpell string Spells "Twincast Rk. II"
/call DeclareIniVar TwincastType string Spells "gem10"
/call DeclareIniVar PetRenewalSpell string Spells "Promised Renewal Rk. III"
/call DeclareIniVar PetRenewalType string Spells "gem7"
/call DeclareIniVar ParadoxSpell string Spells "Summon Frigid Paradox"
/call DeclareIniVar ParadoxSpellType string Spells "gem6"
/call DeclareIniVar ParadoxRodName string Spells "Summoned: Elemental Ice Sliver"
/call DeclareIniVar OrbSpell string Spells "Summon Blazing Orb"
/call DeclareIniVar OrbSpellType string Spells "gem6"
/call DeclareIniVar OrbName string Spells "Blazing Orb"
/call DeclareIniVar ParadoxPotionSlot string Spells "1"
/call DeclareInivar GatherSpell string Spells "Gather Magnitude"
/call DeclareInivar ThaumatizeSpell string Spells "Thaumatize Pet"
/call DeclareIniVar BuffGem string Buffs "gem6"
/call DeclareIniVar selfBuff1 string Buffs "Empyrean Guardian Rk. II"
/call DeclareIniVar selfBuffNoStack1 string Buffs "Protection of the Nine,Blessing of the Nine,Steeloak Skin,Blessing of Steeloak"
/call DeclareIniVar selfBuff2 string Buffs " "
/call DeclareIniVar selfBuffNoStack2 string Buffs " "
/call DeclareIniVar selfBuff3 string Buffs " "
/call DeclareIniVar selfBuffNoStack3 string Buffs " "
/call DeclareIniVar selfBuff4 string Buffs " "
/call DeclareIniVar selfBuffNoStack4 string Buffs " "
/call DeclareIniVar selfBuff5 string Buffs " "
/call DeclareIniVar selfBuffNoStack5 string Buffs " "
/call DeclareIniVar usebuffs int Settings 0 /dobuffs
/call DeclareIniVar mountItem string Items "Bridle of the Bloodied Sokokar"
/call DeclareIniVar hpRobe string Items "${InvSlot[chest].Item.Name}"
/call DeclareIniVar clicky1 string Items " "
/call DeclareIniVar clickyNoStack1 string Items " "
/call DeclareIniVar clicky2 string Items " "
/call DeclareIniVar clickyNoStack2 string Items " "
/call DeclareIniVar clicky3 string Items " "
/call DeclareIniVar clickyNoStack3 string Items " "
/call DeclareIniVar clicky4 string Items " "
/call DeclareIniVar clickyNoStack4 string Items " "
/call DeclareIniVar clicky5 string Items " "
/call DeclareIniVar clickyNoStack5 string Items " "
/call DeclareIniVar invisItem string Items " "
/call DeclareIniVar dispellItem string Items " "
/call DeclareIniVar normalMainhand string Items "${InvSlot[mainhand].Item.Name}"
/call DeclareIniVar normalOffhand string Items "${InvSlot[offhand].Item.Name}"
/call DeclareIniVar hpMask string Items "${InvSlot[face].Item.Name}"
/call DeclareIniVar ModRodName string Items "Rod of Ethereal Transvergence"
/call DeclareIniVar SelfRodSpell string Items "Wand of Phantasmal Modulation"
/call DeclareIniVar SelfRodName string Items "Wand of Phantasmal Modulation"
/call DeclareIniVar MalosiniaList string Debuff "Malosenea Rk. III|"
/call DeclareIniVar auraName string Aura "Rathe's Strength effect"
/call DeclareIniVar auraBuff string Aura "Rathe's Strength"
/call DeclareIniVar auraBuffGem string Aura "gem8"
/call DeclareIniVar DoBcBuffTotal int BCBuffs 0
/call DeclareIniVar DoBuffTotal int Buff 0
/call DeclareIniVar usebuffs int Buff 1
/call BuffQueue
/call BCBuffs
|**
/squelch /custombind add ma
/squelch /custombind add sa
/squelch /alias /anchor /echo SetAnchor
/squelch /alias /manarobe /echo Mana Robe
/squelch /alias /nuketype /echo NukeType
/squelch /alias /pettype /echo set: PetType
/squelch /alias /setma /custombind set ma /assist
/squelch /alias /setsa /custombind set sa /assist
/squelch /alias /changebranch /echo changebranch
/squelch /alias /nukebranch /echo nukebranch
**|
/declare SiphonBuffName string outer
/declare OldState string outer
/declare NukeLine int outer
/declare following int outer 0
/declare follname string outer NULL
/declare ManyTimer timer outer 0s
/declare FireRainTimer timer outer 0s
/declare ServantTimer timer outer 0s
/declare ServantTimer2 timer outer 0s
/call SpellBranch
/if (${UseIRC} && !${Irc} && !${irctimer}) /call Irc
/if (${siphonSpell.Find[Rk. II]} && !${siphonSpell.Find[Rk. III]}) {
/varset SiphonBuffName ${siphonSpell.Left[-7]} Recourse II
} else /if (${siphonSpell.Find[Rk. III]}) {
/varset SiphonBuffName ${siphonSpell.Left[-8]} Recourse III
} else /if (!${siphonSpell.Find[Rk. II]} && !${siphonSpell.Find[Rk. III]}) {
/varset SiphonBuffName "${siphonSpell} Recourse"
}
/if ( ${autoAnnounce} ) /announce on
/echo Auto Mage Mode Activated
/if ( ${nukeMode} || ${useDebuff} ) {
/echo Main Assist: ${MainAssist}
/if ( ${Bool[${secondAssist}]} ) /echo Secondary Assist: ${secondAssist} (if ${MainAssist} dies)
}
/if ( ${nukeMode} || ${useDebuff} ) /echo Will ${If[${useDebuff},malosenea ,]}${If[${nukeMode} && ${useDebuff},then ,]}${If[${nukeMode},start nuking ,]}at ${minHP}%
/if ( ${autoBuff} ) /echo Auto Buff is enabled.
/if ( ${useMount} ) /echo Mount is enabled.
/return
Sub ClearMobList
/declare i int local
/declare mobListID string local
/if ( ${mobList.Find[[]} ) {
/if ( ${mobList.Find[[]}>1 ) /varset mobList ${mobList.Right[-${Math.Calc[${mobList.Find[[]}-1]}]}
/for i 1 to ${mobList.Count[[]}
/varset mobListID ${mobList.Arg[${i},[].Left[-1]}
/if ( ${Defined[mezTimer${mobListID}]} ) /deletevar mezTimer${mobListID}
/if ( ${Defined[slowTimer${mobListID}]} ) /deletevar slowTimer${mobListID}
/if ( ${Defined[tashTimer${mobListID}]} ) /deletevar tashTimer${mobListID}
/if ( ${Defined[maloTimer${mobListID}]} ) /deletevar maloTimer${mobListID}
/if ( ${Defined[waitTimer${mobListID}]} ) /deletevar waitTimer${mobListID}
/if ( ${Defined[maloTimer${mobListID}]} ) /deletevar maloTimer${mobListID}
/if ( ${Defined[maloResists${mobListID}]} ) /deletevar maloResists${mobListID}
/call DeleteFromList mobList ${mobListID}
/call DeleteFromList addList ${mobListID}
/next i
}
/return
Sub GeneralDeclares
/declare bufftimer timer outer 0s
/declare BcClients string outer
/declare BcClients2 int outer
/declare aggroTimer timer outer
/declare followName string outer null
/declare totalKills int outer 0
/declare iniName string outer Auto_${Me.Name}.ini
/declare buffQueue string outer
/declare normalOffhand string outer ${InvSlot[offhand].Item.Name}
/declare uquaAETime float outer
/declare totalMeleeDmg int outer
/declare totalNonMeleeDmg int outer
/declare fightStartTime float outer
/declare fightTotalTime float outer
/declare deathFlag bool outer ${Math.Calc[!(${InvSlot[chest].Item.ID}>0)]}
/declare mobID int outer 0
/declare addID int outer 0
/declare petAttacking bool outer false
/declare i int local
/declare j int local
/declare addIndex int outer
/declare tempStr string local
/declare mobList string outer
/declare addList string outer
/declare newAdds int outer 0
/declare assistWaitTimer timer outer 0
/declare aggroAnim string outer |5|8|12|17|18|42|44|80|106|144|
/declare petCheck bool outer false
/declare petID int outer 0
/declare tempTimer timer local 0
/declare petOff int outer 0
/declare useAnchor int outer
/declare anchorX float outer
/declare anchorY float outer
/declare anchorHeading float outer
/declare leashLength int outer
/declare oldTarget int local
/declare modRodTimer timer outer
/declare nukeWaitTimer timer outer 0
/declare nukeWaitMod int outer 0
/declare mainTank string outer
/declare castSub string outer
/declare validTarget int outer
/declare engaged int outer
/declare mobHPStart int outer
/declare askedForRodTimer timer outer 0
/declare petSpamTimer timer outer
/declare petMaloTimer timer outer 0
/declare maloed bool outer
/declare snared bool outer
/declare rockNuke string outer
/declare fireNuke string outer
/declare magicNuke string outer
/declare boltNuke string outer
/declare coldNuke string outer
/declare c6Timer timer outer
/declare petMaloTimer2 timer outer 0
/declare petOff2 int outer 0
/declare irctimer timer outer 0s
/if (${UseIRC}) /call Irc
/return
Sub Event_Chat(string ChatType,string Sender,string ChatText)
/if ((!${ChatType.Equal[${mychannel}]})&&(!${ChatType.Equal[TELL]})&&(!${ChatType.Equal[group]})) /return
/if (${usegroupchat}==0) /if (${ChatType.Equal[group]}) /return
/call Event_IRC ${ChatType} ${Sender.Right[-2].Left[-1]} "${ChatText}"
/return
Sub AddToQueue(int Buffee,int BuffNumber)
/declare a int local
/declare Compare int local
/if (${QueueCount}<25 && !${Spawn[${Buffee}].Type.Equal[corpse]} && ${Spawn[${Buffee}].ID}) {
/varset Compare 0
/echo ${Buffee}==${DoBuffQueue[${a},1]} || (${Select[${Spell[${DoBuffID[${DoBuffQueue[${a},2]}]}].TargetType},"Group v2","AE PC v2","Group v1","AE PC v1"]} && (${Group.Member[${Spawn[${Buffee}].CleanName}]} || ${Group.Member[${Spawn[${Buffee}].Master.CleanName}]}) && ${Group.Member[${Spawn[${DoBuffQueue[${a},1]}].CleanName}]})) && ${BuffNumber}==${DoBuffQueue[${a},2]}
/for a 1 to 25
/if ((${Buffee}==${DoBuffQueue[${a},1]} || (${Select[${Spell[${DoBuffID[${DoBuffQueue[${a},2]}]}].TargetType},"Group v2","AE PC v2","Group v1","AE PC v1"]} && (${Group.Member[${Spawn[${Buffee}].CleanName}]} || ${Group.Member[${Spawn[${Buffee}].Master.CleanName}]}) && ${Group.Member[${Spawn[${DoBuffQueue[${a},1]}].CleanName}]})) && ${BuffNumber}==${DoBuffQueue[${a},2]}) /varset Compare 1
/next a
/if (!${Compare}) {
/for a 1 to 25
/if (!${DoBuffQueue[${a},1]}) {
/varset DoBuffQueue[${a},1] ${Buffee}
/varset DoBuffQueue[${a},2] ${BuffNumber}
/echo ${BuffNumber}
/varcalc QueueCount ${QueueCount}+1
/return
}
/next a
}
}
/return
Sub RemoveFromQueue(int Buffee,int BuffNumber)
/doevents IRC
/doevents Chat
/declare a int local
/for a 1 to 25
/if (((${Spawn[${DoBuffQueue[${a},1]}].State.Equal["DEAD"]} || !${Spawn[${DoBuffQueue[${a},1]}].ID}) || ((${DoBuffQueue[${a},1]}==${Buffee} || (!${Buffee} && (${Group.Member[${Spawn[${DoBuffQueue[${a},1]}].CleanName}]} || ${Group.Member[${Spawn[${DoBuffQueue[${a},1]}].Master.CleanName}]}))) && (${DoBuffID[${DoBuffQueue[${a},2]}]}==${BuffNumber} || ${DoBuffQueue[${a},2]}==${BuffNumber}))) && ${DoBuffQueue[${a},1]}) {
/varset DoBuffQueue[${a},1] 0
/varset DoBuffQueue[${a},2] 0
/varcalc QueueCount ${QueueCount}-1
}
/next a
/return
Sub DoBuffEvents
/varset MacroState DoBuffEvents
/declare a int local
/declare TempVar int local ${Math.Calc[${DoBuffTotal}+1]}
/declare TempGuy int local 0
/for a 1 to 25
/if (${DoBuffQueue[${a},2]}<${TempVar} && ${Spawn[${DoBuffQueue[${a},1]}].ID} && ${Spawn[${DoBuffQueue[${a},1]}].Type.NotEqual[corpse]} && (${Spawn[${DoBuffQueue[${a},1]}].Distance}<${Spell[${DoBuffID[${DoBuffQueue[${a},2]}]}].MyRange} || ${Spawn[${DoBuffQueue[${a},1]}].Distance}<${Spell[${DoBuffID[${DoBuffQueue[${a},2]}]}].AERange})) {
/varset TempGuy ${DoBuffQueue[${a},1]}
/varset TempVar ${DoBuffQueue[${a},2]}
}
/next a
/if (${Spawn[${TempGuy}].Distance}>=100) /return
/squelch /target id ${TempGuy}
/delay 1s ${Target.ID}==${TempGuy}
/if (${Target.ID}==${TempGuy}) {
/call Cast "${DoBuff${TempVar}}" ${DoBuffGem${TempVar}} 3s
/if (${castReturn.Equal[CAST_SUCCESS]} || ${spellNotHold}) /call RemoveFromQueue ${TempGuy} ${TempVar}
}
/return
Sub CheckDoBuffs(Sender,ChatText)
/declare a int local
/declare i int local
/for i 1 to ${DoBuffTotal}
/for a 1 to ${DoBuffAliases${i}.Count[|]}
/if (${ChatText.Find["${DoBuffAliases${i}.Arg[${a},|]}"]}) {
/if (${ChatText.Find[" pet "]} || ${ChatText.Find[${Spawn[pc ${Sender}]}].Pet.CleanName} || ${Spawn[pet ${Sender}].ID}) {
/call AddToQueue ${Spawn[pc ${Sender}]}].Pet.ID} ${i}
} else {
/call AddToQueue ${Spawn[pc ${Sender}].ID} ${i}
}
}
/next a
/next i
/return
Sub BuffQueue
/declare i int local
/if (!${Defined[DoBuffID]}) /declare DoBuffID[${DoBuffTotal}] int outer
/if (!${Defined[DoBuffQueue]}) /declare DoBuffQueue[25,2] int outer
/if (!${Defined[QueueCount]}) /declare QueueCount int outer
/if (!${Defined[DoBuffLowest]}) /declare DoBuffLowest int outer 100
/if (!${Defined[DoBuffTimer]}) /declare DoBuffTimer timer outer
/if (${DoBuffTotal}) {
/for i 1 to ${DoBuffTotal}
/call DeclareIniVar DoBuff${i} string Buff NULL
/call DeclareIniVar DoBuffGem${i} string Buff null
/call DeclareIniVar DoBuffAliases${i} string Buff NULL
/call DeclareIniVar DoBuffMana${i} int Buff NULL
/if (${Me.AltAbility[${DoBuff${i}}]}) /varset DoBuffID[${i}] ${Me.AltAbility[${DoBuff${i}}].Spell.ID}
/if (${FindItem[${DoBuff${i}}].ID}) /varset DoBuffID[${i}] ${FindItem[${DoBuff${i}}].Spell.ID}
/if (${Me.Book[${DoBuff${i}}]}) /varset DoBuffID[${i}] ${Me.Book[${Me.Book[${DoBuff${i}}]}].ID}
/if (${Ini[Cleric_${Me.CleanName}.ini,Buff,DoBuffIcon${i},NOTFOUND].NotEqual[NOTFOUND]}) /varset DoBuffID[${i}] ${Spell[${Ini[Cleric_${Me.CleanName}.ini,Buff,DoBuffIcon${i},NOTFOUND]}].ID}
/if (${DoBuffLowest}>${DoBuffMana${i}}) /varset DoBuffLowest ${DoBuffMana${i}}
/next i
}
/return
Sub BCBuffs
/declare i int local
/if (${DoBcBuffTotal}) {
/for i 1 to ${DoBcBuffTotal}
/call DeclareIniVar DoBCBuff${i} string BCBuffs NULL
/call DeclareIniVar DoBCBuffMana${i} int BCBuffs NULL
/call DeclareIniVar DoBCBuffMobRange${i} int BCBUffs NULL
/call DeclareIniVar DoBCBuffIgnoreClass${i} string BCBuffs "Use the Class's full Name and seperate with commas"
/next i
}
/return
Sub DeclareIniVar(string name,string varType,string section,string value,string alias,string aliastwo)
/if ( !${Defined[${name}]} ) /declare ${name} ${varType} outer
/varset ${name} ${Ini[${INIFile}.ini,"${section}",${name.Left[1].Upper}${name.Right[-1]},"${value}"]}
/ini "${INIFile}.ini" "${section}" "${name.Left[1].Upper}${name.Right[-1]}" "${${name}}"
|**/if (${Defined[alias]} && ${aliastwo.Equal[NULL]}) {
/echo /alias ${alias} /echo set: ${name}
/squelch /alias ${alias} /echo set: ${name}
} else /if (${Defined[alias]} && ${aliastwo.NotEqual[NULL]}) {
/echo /alias ${alias} /echo set: ${name} ${aliastwo}
/squelch /alias ${alias} /echo set: ${name} ${aliastwo}
}**|
/if (${name.Equal[SelfRodName]}) /return
/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. III
/return
Sub SetIniVar(string name,string section,string value)
/varset ${name} ${value}
/ini "${iniName}" "${section}" "${name.Left[1].Upper}${name.Right[-1]}" "${${name}}"
/return
Sub CheckTarget
/declare tempID int local ${Target.ID}
/declare i int local
/delay 1
/if (${ExcludeList.Find[${Target.DisplayName}]}) {
/goto :notgood
}
/if (${Target.ID} && ${Me.LAInspectBuffs}) {
/for i 1 to ${Target.BuffCount}
/if (${MezSpellList.Find[${Target.Buff[${i}]}]}) {
/goto :notgood
}
/next i
}
/if ( ( ${Spawn[${tempID}].Type.Equal[npc]} || ( ${Spawn[${tempID}].Type.Equal[pet]} && !${Spawn[${tempID}].Master.Type.Equal[pc]} ) ) && ( ( ${Spawn[pc ${mainTank}].NearestSpawn[radius ${Math.Calc[${minRadius}*2]} id ${tempID}].ID} && ${Spawn[pc ${mainTank}].Distance3D}<=${minRadius} ) || !${Spawn[pc ${mainTank}].ID} || ${Spawn[pc ${mainTank}].Distance3D}>200 ) && ${tempID}!=${petID} && ( ${aggroAnim.Find[|${Spawn[${tempID}].Animation}|]} || ${Spawn[${tempID}].PctHPs}<100 || ${Me.TargetOfTarget.Type.Equal[pc]} || ${Me.TargetOfTarget.Master.Type.Equal[pc]} ) ) {
/varset validTarget 1
} else {
:notgood
/varset validTarget 0
}
/return
Sub CheckiniBuffs
/varset MacroState CheckIniBuffs
/if (${Zone.ID}!=${currentZone}) /call Event_Zone
/varset BcClients ${NetBots.Client}
/varset BcClients2 ${Math.Calc[${BcClients.Count[ ]}+1]}
/declare stacks bool true
/declare buffs string local
/declare ignorelist string local
/declare c int local
/declare i int local
/declare X int local
/declare j int local
/declare b int local
/varset b 1
/declare spellName string local
/declare buffName string local
/for i 1 to 8
/if ( ${FindItem[=${clicky${i}}].ID} ) {
/varset spellName ${FindItem[=${clicky${i}}].Spell.Name}
/if ( !${Me.Buff[${spellName}].ID} || ${Me.Buff[${spellName}].Duration}<=4 ) {
/varset j 1
:check_nostack
/if (!${Spell[${spellName}].Stacks[2]}) /goto :skip_clicky
/varset buffName ${clickyNoStack${i}.Arg[${j},,]}
/if ( ${Bool[${buffName}]} ) {
/if ( ${Me.Buff[${buffName}].ID} ) /goto :skip_clicky
/varcalc j ${j}+1
/goto :check_nostack
}
/call Cast "${clicky${i}}" item 0 ${If[${Bool[${castSub}]},${castSub},]}
:skip_clicky
}
}
/varcalc b ${b}+1
/next i
/for i 1 to 5
/if ( ${Me.Book[${selfBuff${i}}]} ) {
/varset spellName ${selfBuff${i}}
/if ( !${Me.Buff[${spellName}].ID} || ${Me.Buff[${spellName}].Duration}<=4 && ${Spell[${spellName}].Mana} < ${Me.CurrentMana} ) {
/varset j 1
:check_nostack2
/if (!${Spell[${spellName}].Stacks[2]}) /goto :skip_self_buff
/varset buffName ${selfBuffNoStack${i}.Arg[${j},,]}
/if ( ${Bool[${buffName}]} ) {
/if ( ${Me.Buff[${buffName}].ID} ) /goto :skip_self_buff
/varcalc j ${j}+1
/goto :check_nostack2
}
/target myself
/echo Casting ${selfBuff${i}}.
/call Cast "${selfBuff${i}}" ${BuffGem} 0 ${If[${Bool[${castSub}]},${castSub},]}
:skip_self_buff
}
}
/next i
:end
/call CheckItems
|Start Of the BC buffing Routine
/varset MacroState BCBuffs
/varset BcClients ${NetBots.Client}
/varset BcClients2 ${Math.Calc[${BcClients.Count[ ]}+1]}
/varset buffs ${NetBots[${BcClients.Arg[${X}]}].Buff}
/if (${UseReverseBcOrder}) /goto :Reverse
/if (${UseMidBcOrder}) /goto :Reverse2
/if (${UseMidReverseOrder}) /goto :Reverse3
/for X 1 to ${BcClients2}
/for b 1 to ${DoBcBuffTotal}
/varset ignorelist ${Ini[${iniName},"BCBuffs","DoBCBuffIgnoreClass${b}"]}
/if (!${NetBots[${BcClients.Arg[${X}]}].Buff.Find[${Spell[${DoBCBuff${b}}].ID}]} && ${NetBots[${BcClients.Arg[${X}]}].InZone} && ${Spawn[${BcClients.Arg[${X}]}].ID} && ${Spawn[${BcClients.Arg[${X}]}].Distance}<=100 && ${Me.PctMana}> ${DoBCBuffMana${b}} && !${SpawnCount[npc radius ${DoBCBuffMobRange${b}} Range 30 1000]} && !${ignorelist.Find[${NetBots[${BcClients.Arg[${X}]}].Class}]} && ${Me.CurrentMana}>${Spell[${DoBCBuff${b}}].Mana} && ${NetBots[${BcClients.Arg[${X}]}].Stacks[${Spell[${DoBCBuff${b}}].ID}]}) {
/echo buffing ${NetBots[${BcClients.Arg[${X}]}].Name} with ${DoBCBuff${b}}
/call CastSpell "${DoBCBuff${b}}" ${BuffGem} ${NetBots[${BcClients.Arg[${X}]}].ID}
}
/next b
/next X
/goto :end2
:Reverse
/for X ${BcClients2} downto 1
/for b 1 to ${DoBcBuffTotal}
/varset ignorelist ${Ini[${iniName},"BCBuffs","DoBCBuffIgnoreClass${b}"]}
/if (!${NetBots[${BcClients.Arg[${X}]}].Buff.Find[${Spell[${DoBCBuff${b}}].ID}]} && ${NetBots[${BcClients.Arg[${X}]}].InZone} && ${Spawn[${BcClients.Arg[${X}]}].ID} && ${Spawn[${BcClients.Arg[${X}]}].Distance}<=100 && ${Me.PctMana}> ${DoBCBuffMana${b}} && !${SpawnCount[npc radius ${DoBCBuffMobRange${b}} Range 30 1000]} && !${ignorelist.Find[${NetBots[${BcClients.Arg[${X}]}].Class}]} && ${Me.CurrentMana}>${Spell[${DoBCBuff${b}}].Mana} && ${NetBots[${BcClients.Arg[${X}]}].Stacks[${Spell[${DoBCBuff${b}}].ID}]}) {
/echo buffing ${NetBots[${BcClients.Arg[${X}]}].Name} with ${DoBCBuff${b}}
/call CastSpell "${DoBCBuff${b}}" ${BuffGem} ${NetBots[${BcClients.Arg[${X}]}].ID} CheckAll
}
/next b
/next X
/goto :end2
:reverse2
/for X ${Math.Calc[${BcClients2} /2]} to ${BcClients2}
/for b 1 to ${DoBcBuffTotal}
/varset ignorelist ${Ini[${iniName},"BCBuffs","DoBCBuffIgnoreClass${b}"]}
/if (!${NetBots[${BcClients.Arg[${X}]}].Buff.Find[${Spell[${DoBCBuff${b}}].ID}]} && ${NetBots[${BcClients.Arg[${X}]}].InZone} && ${Spawn[${BcClients.Arg[${X}]}].ID} && ${Spawn[${BcClients.Arg[${X}]}].Distance}<=100 && ${Me.PctMana}> ${DoBCBuffMana${b}} && !${SpawnCount[npc radius ${DoBCBuffMobRange${b}} Range 30 1000]} && !${ignorelist.Find[${NetBots[${BcClients.Arg[${X}]}].Class}]} && ${Me.CurrentMana}>${Spell[${DoBCBuff${b}}].Mana} && ${NetBots[${BcClients.Arg[${X}]}].Stacks[${Spell[${DoBCBuff${b}}].ID}]}) {
/echo buffing ${NetBots[${BcClients.Arg[${X}]}].Name} with ${DoBCBuff${b}}
/call CastSpell "${DoBCBuff${b}}" ${BuffGem} ${NetBots[${BcClients.Arg[${X}]}].ID} CheckAll
}
/next b
/next X
/goto :end2
:reverse3
/for X ${BcClients2} downto ${Math.Calc[${BcClients2} /2]}
/for b 1 to ${DoBcBuffTotal}
/varset ignorelist ${Ini[${iniName},"BCBuffs","DoBCBuffIgnoreClass${b}"]}
/if (!${NetBots[${BcClients.Arg[${X}]}].Buff.Find[${Spell[${DoBCBuff${b}}].ID}]} && ${NetBots[${BcClients.Arg[${X}]}].InZone} && ${Spawn[${BcClients.Arg[${X}]}].ID} && ${Spawn[${BcClients.Arg[${X}]}].Distance}<=100 && ${Me.PctMana}> ${DoBCBuffMana${b}} && !${SpawnCount[npc radius ${DoBCBuffMobRange${b}} Range 30 1000]} && !${ignorelist.Find[${NetBots[${BcClients.Arg[${X}]}].Class}]} && ${Me.CurrentMana}>${Spell[${DoBCBuff${b}}].Mana} && ${NetBots[${BcClients.Arg[${X}]}].Stacks[${Spell[${DoBCBuff${b}}].ID}]}) {
/echo buffing ${NetBots[${BcClients.Arg[${X}]}].Name} with ${DoBCBuff${b}}
/call CastSpell "${DoBCBuff${b}}" ${BuffGem} ${NetBots[${BcClients.Arg[${X}]}].ID} CheckAll
}
/next b
/next X
|end bc buffing
:end2
/varset bufftimer 10s
/return
Sub UpdateMobList
/declare i int local
/declare mobListID string local
/if ( ${mobList.Find[[]} ) {
/if ( ${mobList.Find[[]}>1 ) /varset mobList ${mobList.Right[-${Math.Calc[${mobList.Find[[]}-1]}]}
/for i 1 to ${mobList.Count[[]}
/varset mobListID ${mobList.Arg[${i},[].Left[-1]}
/if ( ( !${Spawn[${mobListID}].Type.Equal[NPC]} && !${Spawn[${mobListID}].Master.Type.Equal[NPC]} ) || ${Spawn[${mobListID}].Type.Equal[corpse]} ) {
/if ( ${Defined[mezTimer${mobListID}]} ) /deletevar mezTimer${mobListID}
/if ( ${Defined[slowTimer${mobListID}]} ) /deletevar slowTimer${mobListID}
/if ( ${Defined[tashTimer${mobListID}]} ) /deletevar tashTimer${mobListID}
/if ( ${Defined[waitTimer${mobListID}]} ) /deletevar waitTimer${mobListID}
/if ( ${Defined[maloTimer${mobListID}]} ) /deletevar maloTimer${mobListID}
/if ( ${Defined[maloResists${mobListID}]} ) /deletevar maloResists${mobListID}
/call DeleteFromList mobList ${mobListID}
/call DeleteFromList addList ${mobListID}
}
/next i
}
/return
Sub ClearMobList
/declare i int local
/declare mobListID string local
/if ( ${mobList.Find[[]} ) {
/if ( ${mobList.Find[[]}>1 ) /varset mobList ${mobList.Right[-${Math.Calc[${mobList.Find[[]}-1]}]}
/for i 1 to ${mobList.Count[[]}
/varset mobListID ${mobList.Arg[${i},[].Left[-1]}
/if ( ${Defined[mezTimer${mobListID}]} ) /deletevar mezTimer${mobListID}
/if ( ${Defined[slowTimer${mobListID}]} ) /deletevar slowTimer${mobListID}
/if ( ${Defined[tashTimer${mobListID}]} ) /deletevar tashTimer${mobListID}
/if ( ${Defined[maloTimer${mobListID}]} ) /deletevar maloTimer${mobListID}
/if ( ${Defined[waitTimer${mobListID}]} ) /deletevar waitTimer${mobListID}
/if ( ${Defined[maloTimer${mobListID}]} ) /deletevar maloTimer${mobListID}
/if ( ${Defined[maloResists${mobListID}]} ) /deletevar maloResists${mobListID}
/call DeleteFromList mobList ${mobListID}
/call DeleteFromList addList ${mobListID}
/next i
}
/return
Sub AddToList(string listName,string tempID)
/varset tempID [${tempID}]
/if ( !${${listName}.Find[${tempID}]} ) {
/varset ${listName} ${${listName}}${tempID}
/return 1
}
/return 0
Sub Event_CoH(string line,string sender,string channel,string cohperson2)
/varset sender ${sender.Right[-2].Left[-1]}
/declare i int local
/delay 10s ${Me.AltAbilityReady[Call of the Hero]}
/if (${channel.Equal[the group]} || ${channel.Equal[you]} || ${channel.Equal[the raid]}) {
/if ( ${cohperson2.Equal[group]} ) {
/echo coh group Incoming!
/for i 1 to ${Group}
/if ( ${Group.Member[${i}].ID} && ${Group.Member[${i}].Distance}>=100 ) {
/echo CoH'ing ${Group.Member[${i}]}
/call CastSpell "Call of the Hero" alt ${Group.Member[${i}].ID}
}
/delay 20s ${Me.AltAbilityReady[Call of the Hero]}
/next i
}
/if ( ${Spawn[${cohperson2}].ID} && !${cohperson2.Equal[group]} ) {
/echo CoH'ing ${cohperson2}
/if (${Group.Member[${Spawn[${cohperson2}]}].ID}) /call CastSpell "Call of the Hero" alt ${Spawn[pc ${cohperson2}].ID}
}
/if ( !${Spawn[${cohperson2}].ID} ) {
/echo CoH'ing ${sender}
/if (${Group.Member[${Spawn[${sender}]}].ID}) /call CastSpell "Call of the Hero" alt ${Spawn[pc ${sender}].ID}
}
}
/return
Sub DeleteFromList(string listName,string tempID)
/varset tempID [${tempID}]
/declare a int local
/declare b int local
/declare strLeft string local
/declare strRight string local
/varcalc a ${${listName}.Find[${tempID}]}-1
/varcalc b ${${listName}.Length}-${tempID.Length}-${a}
/if ( ${a}>0 ) /varset strLeft ${${listName}.Left[${a}]}
/if ( ${b}>0 ) /varset strRight ${${listName}.Right[${b}]}
/varset ${listName} ${strLeft}${strRight}
/return
Sub CastSpell(string sSpell,string sType,int iTarget,string sCheckUp)
/varset MacroState CastSpell
:ReTarget
/if ( ${iTarget} && ${Target.ID}!=${iTarget} && ${Spawn[id ${iTarget}].ID} && ${Spawn[id ${iTarget}].Type.NotEqual[Corpse]}) {
/squelch /target id ${iTarget}
/delay 2s ${Target.ID}==${iTarget}
/if ( ${Target.ID}!=${iTarget} ) {
/if (${Me.Type.Equal[Corpse]} || (!${InvSlot[chest].Item.ID} && !${Me.Platinum})) /call Wait4Rez
/goto :ReTarget
}
}
/if ( ${Target.Type.Equal[Corpse]} || !${Spawn[id ${iTarget}].ID} ) {
}
/if ( !${Me.Gem[${sSpell}]} && ${sType.Find[gem]}) {
/if (${sType.Length}==4) /memspell ${sType.Right[1]} "${sSpell}"
/if (${sType.Length}==5) /memspell ${sType.Right[2]} "${sSpell}"
/delay 3s ${Me.SpellReady[${sSpell}]}
}
:WaitToCast
/doevents
/if ( ${sType.Find[gem]} ) {
/delay 2s ${Me.SpellReady[${sSpell}]}
} else {
/delay 4s ${Me.AltAbilityReady[${sSpell}]}
}
/if ( !${Me.SpellReady["${sSpell}"]} && ${sType.Find[gem]}) /return
/if ( ${sCheckUp.NotEqual[NULL]} ) {
/call Cast "${sSpell}" ${sType} 0 ${sCheckUp}
} else {
/call Cast "${sSpell}" ${sType} 0
}
/return ${Macro.Return}
Sub CastNuke(string sSpell,string sType,int iTarget,string sCheckUp)
/if (${Spell[${sSpell}].Mana}>${Me.CurrentMana} && ${sType.Find[gem]}) /return CAST_OUTOFMANA
/if (${Announce}) /bc Casting ${sSpell} on ${Spawn[id ${iTarget}].CleanName}
:ReTarget
/if (${Me.Dead}) /return
/if ( ${Target.ID}!=${iTarget} && ${Spawn[id ${iTarget}].ID} ) {
/squelch /target id ${iTarget}
/delay 2s ${Target.ID}==${iTarget}
/if ( ${Target.ID}!=${iTarget} ) /goto :ReTarget
}
/if ( ${Target.Type.Equal[Corpse]} ) /return
/if (${Target.Dead} || ${Spawn[id ${iTarget}].Dead}) /return DEAD
/if (!${Me.Gem[${sSpell}]} && ${sType.Find[gem]} && ${Me.Book[${sSpell}]}) {
/echo Have to mem ${sSpell}
/if (${sType.Length}==4) /memspell ${sType.Right[1]} "${sSpell}"
/if (${sType.Length}==5) /memspell ${sType.Right[2]} "${sSpell}"
/delay 6s ${Me.Gem[${sType.Right[1]}].Name.Equal[${sSpell}]}
} else /if (!${Me.Book[${sSpell}]} && ${sType.Find[gem]} || !${Me.AltAbility["${sSpell}"]} && ${sType.Find[alt]}) {
/echo POOOO ${sSpell} -- ${sType}
/return
}
:WaitToCast
/if (${Me.Dead}) /return
/if (!${Me.SpellReady["${sSpell}"]} && ${sType.Find[gem]} && ${Me.Gem[${sSpell}]} || !${Me.AltAbilityReady["${sSpell}"]} && ${sType.Find[alt]} && ${Me.AltAbility["${sSpell}"]}) {
/if (${Me.AltAbilityReady[Force of Elements]}) {
/echo Casting Force of Elements on >> ${Target.CleanName} <<
/call cast "Force of Elements" alt
} else /if (!${Bool[${FindItem[${ParadoxRodName}].Timer}]}) {
/call CastItemClicky "${ParadoxRodName}"
} else /if (!${Bool[${FindItem[${OrbName}].Timer}]}) {
/call CastItemClicky "${OrbName}"
}
/goto :WaitToCast
}
/if (${sType.Equal[item]}) {
/if (${FindItem[${sSpell}].InvSlot}) /call CastItemClicky "${sSpell}"
} else /if ( ${sCheckUp.NotEqual[NULL]} ) {
/call Cast "${sSpell}" ${sType} 0 ${sCheckUp}
} else {
/call Cast "${sSpell}" ${sType} 0
}
/if (${castReturn.Equal[CAST_SUCCESS]} && ${Target.ID}==${iTarget} && ${Target.PctHPs}>0) {
/if (${Me.AltAbilityReady[Force of Elements]}) {
/echo Casting Force of Elements on >> ${Target.CleanName} <<
/call cast "Force of Elements" alt
} else /if (!${Bool[${FindItem[${ParadoxRodName}].Timer}]} && ${FindItem[${ParadoxRodName}].ID}) {
/call CastItemClicky "${ParadoxRodName}"
} else /if (!${Bool[${FindItem[${OrbName}].Timer}]} && ${FindItem[${OrbName}].ID}) {
/call CastItemClicky "${OrbName}"
}
}
/return ${castReturn}