- Joined
- Jan 19, 2006
- Messages
- 187
- Reaction score
- 0
- Points
- 0
- Age
- 45
Hello Ive been using this war mac for a while now, it has some problems but nothing i can't live with. EXCEPT that the darn thing wont turn off attack during enrage. Every time i pull a mob that enrages i have to shut off the mac before it gets to that point. Im guessing it would just take a minor tweak to fix but i know absolutely nothing about code. So if anyone could do me a favor and take a glance it and make a suggestion on what might fix my problem id be glad to try it and very appreciative. Anywhere heres the mac:
Code:
#Event CampCheck "#1# says out of character, #*#camp check#*#"
#Event CampCheck "#1# shouts, #*#camp check#*#"
#Event GotSummoned "You have been summoned!"
#Event Enraged "|${Target.CleanName}| become ENRAGED#*#"
#Event EnragedOff "|${Target.CleanName}| is no longer enraged#*#"
#Event MobGate "|${Target.CleanName}| begins to cast the gate spell#*#"
#Event MobDead "#*#You have slain#*#"
#Event MobDead "#*#has been slain by#*#"
#event GotHit "#*#hits YOU for#*#"
#event GotHit "#*#slashes YOU for#*#"
#event GotHit "#*#crushes YOU for#*#"
#event GotHit "#*#bashes YOU for#*#"
#event GotHit "#*#kicks YOU for#*#"
#event GotHit "#*#smashes YOU for#*#"
#event GotHit "#*#mauls YOU for#*#"
#event GotHit "#*#gores YOU for#*#"
#event GotHit "#*#pierces YOU for#*#"
#event GotHit "#*#kicks YOU for#*#"
#event GotHit "#*#bashes YOU for#*#"
#event Zoned "You have entered#*#"
#Event TooFarAway "#*#Your target is too far away, get closer#*#"
#event NotStanding "#*#You must be standing to attack!#*#"
#event NoSeeTarget "#*#You cannot see your target.#*#"
#event NoSeeTarget "#*#You can't hit them from here#*#"
#event Dead "#*#Returning to home point#*#"
#event ManualLoot "[MQ2] loooot#*#"
#event MakeCamp "[MQ2] make camp#*#"
#event SetPuller "[MQ2] set puller #1#"
#event SetRaidMA "[MQ2] set raidma #1#"
#event RaidMode "[MQ2] set raidmode#*#"
#event beepbeep "#*# tells you#*#wake up#*#"
#event Restart "#1# tells the group, #*#reset home!#*#"
#event Restart "#1# tells you, #*#reset home!#*#"
#event AssistPuller "|${Puller}| tells the group, 'assist me#*#"
#include advloot.inc
|#include wait4rez.inc
#include spell_routines.inc
#define DEBUG_1 "/squelch /echo"
#define DEBUG_2 "/echo"
Sub Main
/echo Now running lazytank, combat helper...
|/if (!${Bool[${Plugin[mq2moveutils]}]}) {
| /echo MQ2MoveUtils not detected! This macro requires it!
| /beep
| /end
|}
/declare ResetMasters string outer "Mario"
/declare Provoke string outer "Bazu Bellow"
/declare ShieldDistance int outer 25
/declare ShootBow outer FALSE
/declare AssistMeAt int outer 98
/declare Puller string outer
/declare PullerID int outer
/declare RaidMode string outer FALSE
/declare RaidMA string outer
/declare RaidEngageAt int outer 96
/declare Closeness int outer 99
/declare DefaultPuller string outer YOURFAVORITEPULLER
/declare Casters string outer Necromancer|Enchanter|Wizard|Magician|Cleric|Druid|Shaman
/declare CallAssist string outer TRUE
/declare Verbose outer TRUE
/declare Channel string outer /gsay
/declare HomeXLoc int outer ${Me.X}
/declare HomeYLoc int outer ${Me.Y}
/declare Berated outer FALSE
/declare Engaged outer TRUE
/declare DeadTarget outer FALSE
/declare Adds outer TRUE
/declare DEBUG outer FALSE
/declare TargetArray[4] string outer
/declare ShieldTimer timer outer 300s
/declare LootMobs int outer 50
/declare CorpseList string outer 0
/declare CorpseRadius int outer 70
/declare MobsTooClose int outer 50
/declare CorpseAlertList int outer 70
/declare CorpseRotTime string outer 440s
/declare CorpseRotTimer timer outer
/declare CorpseRotSetTimer string outer FALSE
/declare LootINIFile string outer "${Me.Name}_loot.ini"
/declare useAutoLoot string outer FALSE
/declare cz string local ${Zone}
/declare BowShots int outer 0
/declare WaitTimer timer outer
/declare SanityTimer timer outer
/declare OldItem string outer
/squelch /alias /lootmobs /echo loooot
/squelch /alias /makecamp /echo make camp
/squelch /alias /setpuller /echo set puller
/squelch /alias /setraidma /echo set raidma
/squelch /alias /setraidmode /echo set raidmode
/if (!${Target.Type.Equal[NPC]}) {
/if (!${Target.ID} || ${Target.Type.NotEqual[PC]} || ${Target.Type.Equal[Corpse]} || ${Target.Type.Equal[PET]}) {
/varset Puller ${DefaultPuller}
/target ${Puller}
/delay 3
/varset PullerID ${Target.ID}
/squelch /target clear
} else {
/varset Puller ${Target}
/target ${Puller}
/delay 3
/varset PullerID ${Target.ID}
/squelch /target clear
}
}
/if (${PullerID}) {
/echo I Will assist ${Puller} for incoming targets.
/echo I Will call assist from the group at ${AssistMeAt}%
/echo I am using ${Provoke} for my provoke /disc
} else {
/echo Waiting for mobs to come to camp...
}
/if (${Verbose}) /echo Default channel for announcements is ${Channel}
/if (!${InvSlot[charm].Item.Name.Length} && !${InvSlot[chest].Item.Name.Length} && !${InvSlot[head].Item.Name.Length} ) /call Event_Dead
:Main_Loop
DEBUG_1 top of main loop.
/delay 1
:needamob
/doevents
/if (!${Target.ID} && ${PullerID} && ${Spawn[${PullerID}].Distance} < 180 && !${RaidMode}) {
/squelch /assist ${Puller}
/delay 3
/if (${Target.Type.Equal[PC]}) /target clear
/delay 3
/if (${Target.Type.Equal[PC]}) /target clear
/if (${Target.ID} && ${Target.ID} != ${Me.ID}) {
/face fast
/if (${DEBUG}) /echo Setting TargetArray
/varset TargetArray[1] ${Target.CleanName}
/varset TargetArray[2] ${Target.Level}
/varset TargetArray[3] ${Target.Name}
/varset TargetArray[4] ${Target.ID}
/varset SanityTimer 1m
} else /if (${Target.ID} == ${Me.ID}) {
/squelch /target clear
}
}
/if (${Target.ID} && ${Verbose}&& ${Target.Type.Equal[NPC]}) ${Channel} Ready to tag ${Target.CleanName} from you, bring it in!
/if (!${Target.ID} && ${PullerID} && ${Spawn[${PullerID}].Type.Equal[PC]}) {
/goto :needamob
} else {
/call CheckForAdds
}
:waitformob
/doevents
DEBUG_2 :waitformob
:BowShot
DEBUG_2 :Bowshot Bowshots: ${BowShots}, ShootBow: ${ShootBow}
/if (${Target.ID} && ${Target.LineOfSight} && ${ShootBow} && ${Target.Distance} > 40 && ${Target.Type.Equal[NPC]} && ${BowShots} < 3 && ${Target.Distance} < 225) {
DEBUG_2 Inside /goto :BowShot
/face fast
/ranged
/varcalc BowShots ${BowShots}+1
/delay 12
/goto :BowShot
}
/if (${Target.Distance} > 60 && ${Target.ID} && ${Target.Type.Equal[NPC]} && ${SanityTimer} && ${Target.ID} != ${Me.ID}) {
DEBUG_2 Inside /goto :waitformob
/delay 5
/face fast
/goto :waitformob
}
/if (${Math.Distance[${HomeYLoc},${HomeXLoc}]} < 100 && !${Target.ID} && !${RaidMode}) /call CheckForAdds
/if (${RaidMode} && !${Engaged}) {
DEBUG_1 Inside /if ({RaidMode}) switch, main loop.
:HoldEngage
/assist ${RaidMA}
/delay 1
/doevents
/if (!${Target.ID} || ${Target.PctHPs} > ${RaidEngageAt}) /goto :HoldEngage
/varset Engaged TRUE
/squelch /stick 15 moveback
/call KillTarget
}
/if (${Target.ID} && ${Math.Distance[${HomeYLoc},${HomeXLoc}]} < 50 && ${Target.Distance} < 65 && ${Target.Type.Equal[NPC]}) {
/varset Engaged TRUE
/call KillTarget
}
/if (!${Target.ID}) /call ReadyForNext
/goto :Main_Loop
/return
Sub CheckForAdds
DEBUG_1 Entered CheckForAdds
/if (${DEBUG}) /echo In CheckForAdds!
/declare i int local 1
/declare s int local
/for i 1 to 4
/varset s ${NearestSpawn[${i},npc].ID}
/if (${Spawn[${s}].Distance} < 60 && ${Math.Distance[${Me.Z}:${Spawn[${s}].Z}]} < 40 && ${Spawn[${s}].LineOfSight}) {
/squelch /target npc id ${s}
/if (${Verbose}) /echo Target Information:
/if (${Verbose}) /echo [ ${Target.Level} ${Target.Race} ${Target.Class} ] ${Target} ${Target.Surname} ( ${Target.Type} )
/if (${DEBUG}) /echo Setting TargetArray
/varset TargetArray[1] ${Target.CleanName}
/varset TargetArray[2] ${Target.Level}
/varset TargetArray[3] ${Target.Name}
/varset TargetArray[4] ${Target.ID}
/return
}
/next i
/return
Sub KillTarget
DEBUG_1 Entered KillTarget
/keypress 5
/declare BackTimer timer local 5s
/varset SanityTimer 90s
/if (!${Target.ID}) /return
/varset WaitTimer 1s
:Waiting
/if (${WaitTimer}) {
/delay 1
/doevents
/goto :Waiting
}
:Combat
/keypress 3
/keypress 4
/doevents
/if (!${SanityTimer} && ${Target.Distance} > 20) {
/squelch /target clear
/delay 3
/call ReadyForNext
/return
}
/if (${Paused}) {
/delay 1s
/doevents
/goto :Combat
}
/if (${Target.ID}) {
/face fast nolook
/if (${CallAssist} && ${Verbose}) /call AssistMe
/if (${Me.PctHPs}<=9) /call DoFurious
}
/if (${Me.Feigning}) {
/stand
/delay 1
/attack on
/if (${Target.Distance} > 12) /stick 10 moveback
}
/if (${Target.Distance} > 140) {
/target clear
/varset Engaged FALSE
/return
}
/if (!${Berated} && ${Me.CombatAbilityReady[${Provoke}]} && !${RaidMode}) /call DoIncite
/if (!${Me.Combat} && ${Int[${Target.Distance}]} < 70) /squelch /stick 10 moveback
/if (!${Me.Combat} && ${Target.Distance} < ${Target.MaxRangeTo}) /attack on
/if (!${Me.TargetOfTarget.Name.Equal[${Me}]}) /if (${Target.Distance} < 25 && ${Me.AbilityReady["Taunt"]} && !${RaidMode}) /doability "Taunt"
/if (!${Me.Combat} && ${Int[${Target.Distance}]} < 100 && ${RaidMode}) /stick moveback behindonce ${Math.Calc[${Target.MaxRangeTo}*${Closeness}/100]}
/if (${BackTimer} <=1 && ${RaidMode} && ${Me.Combat}) {
/stick moveback behindonce ${Math.Calc[${Target.MaxRangeTo}*${Closeness}/100]}
/varset BackTimer 5s
}
/if (!${ShieldTimer} && ${Me.PctHPs} > 40) /call DoShielding
/if (!${Target.ID} || ${Target.Type.Equal[Corpse]}) {
/squelch /target clear
/delay 3
/attack off
/delay 3
/call CheckForAdds
/if (${Target.ID}) /call KillTarget
/doevents MobDead
/return
}
/doevents
/goto :Combat
/return
Sub DoShielding
DEBUG_1 Entered DoShielding
/if (${Me.TargetOfTarget.PctHPs} < 30 && ${Me.TargetOfTarget.Type.Equal[pc]} && ${Me.PctHPs} > 50 && ${Me.TargetOfTarget.Distance} <= ${ShieldDistance} && ${Me.TargetOfTarget.ID} != ${Me.ID}) {
/shield ${Me.TargetOfTarget}
/varset ShieldTimer 300s
/if (${Verbose}) ${Channel} SHIELDING is now on ${Me.TargetOfTarget}
/return
}
/declare i int local 0
/for i 1 to ${Group}
/if (${Casters.Find[${Group.Member[${i}].Class}]} && ${Group.Member[${i}].PctHPs} < 60 && ${Group.Member[${i}].Distance} <= ${ShieldDistance}) {
/shield ${Group.Member[${i}]}
/varset ShieldTimer 300s
/if (${Verbose}) ${Channel} Now SHIELDING ${Group.Member[${i}]}!!
/return
}
/return
Sub ReadyForNext
DEBUG_1 Entered ReadyForNext
/if (!${Me.Buff[Nettle Shield].ID} && ${Spawn[pc DRUIDFRIEND].ID}) {
/tell DRUIDFRIEND ds
/delay 6s
}
/if (!${Me.Buff[Steeloak Skin].ID} && !${Me.Buff[Conviction].ID} && !${Me.Buff[Hand of Conviction].ID} && ${Spawn[pc DRUIDFRIEND].ID}) {
/tell DRUIDFRIEND ss please
/delay 9s
}
/if (!${Me.Buff[Ward of Valiance].ID} && !${Me.Buff[Conviction].ID} && !${Me.Buff[Hand of Conviction].ID} && ${Me.Buff[Steeloak Skin].ID} && ${Spawn[pc CLERICFRIEND].ID}) {
/tell CLERICFRIEND buffme
/delay 7s
}
/if (!${Me.Buff[Symbol of Balikor].ID} && !${Me.Buff[Balikor's Mark].ID} && !${Me.Buff[Conviction].ID} && !${Me.Buff[Hand of Conviction].ID} && ${Me.Buff[Steeloak Skin].ID} && ${Spawn[pc CLERICFRIEND].ID}) {
/tell CLERICFRIEND balikor
/delay 7s
}
/if (!${Me.Buff[Speed of Salik].ID} && !${Me.Buff[Hastening of Salik].ID} && ${Spawn[pc mezem].ID}) {
/tell mezem haste
/delay 10s
}
/if (!${Me.Buff[Ward of Valiance].ID} && !${Me.Buff[Conviction].ID} && !${Me.Buff[Hand of Conviction].ID} && !${Me.Buff[Steeloak Skin].ID} && ${Spawn[pc CLERICFRIEND].ID}) {
/tell CLERICFRIEND V
/delay 7s
}
|/if (!${Me.Buff[Form of Defense I].ID}) {
| /call EquipItem "Shroud of the Fallen Defender" back
| | /varset OldItem ${Macro.Return}
| /call cast "Form of Defense 1" item 10s
| /delay 5
| /call EquipItem "${OldItem}" back
|}
/varset Closeness 99
/varset CallAssist TRUE
/varset Engaged FALSE
/varset Berated FALSE
/varset BowShots 0
/varset Adds TRUE
DEBUG_1 Leaving ReadyForNext
/return
Sub DoFurious
DEBUG_1 Entereed DoFurious
/if (${Me.CombatAbilityReady["Furious"]}) {
/disc Furious
/echo Health too low! Hitting Furious!
/if (${Verbose}) ${Channel} Going into Riposte mode! Will need healing within 12 seconds!
}
/return
Sub AssistMe
DEBUG_1 Entered AssistMe
/if (${CallAssist} ${Target.PctHPs} <= ${AssistMeAt} && ${Me.Combat}) {
/if (${Verbose}) /gsay Assist me now on [ %t ]
/varset CallAssist FALSE
}
/return
Sub ReturnHome
DEBUG_1 Entered ReturnHome
:MoveHome
/doevents
/face fast nolook loc ${HomeYLoc},${HomeXLoc}
/if (${Math.Distance[${HomeYLoc},${HomeXLoc}]}>20) /keypress forward hold
/call AreWeStuck
|/warp loc -1670 344 -165
/if (${Math.Distance[${HomeYLoc},${HomeXLoc}]}<25) {
/keypress forward
/keypress back
/keypress left
/keypress right
/if (${DEBUG}) /echo Leaving Sub ReturnHome
/return
}
/goto :MoveHome
/return
Sub AreWeStuck
/doevents
/declare StuckXLoc int local ${Me.X}
/declare StuckYLoc int local ${Me.Y}
/delay 5
/if (${StuckXLoc}==${Me.X} && ${StuckYLoc}==${Me.Y}) /call MoveAround
/return
Sub MoveAround
/doevents
/keypress forward
/keypress back hold
/delay 3
/keypress back
/if (${Math.Rand[2]}) {
/keypress strafe_right hold
} else {
/keypress strafe_left hold
}
/delay 10
/keypress strafe_right
/keypress strafe_left
/return
Sub DoIncite
DEBUG_1 Inside DoIncite
/if (${Me.PctEndurance} > 40 && !${Berated} && ${Target.Distance} < 50) {
DEBUG_1 DoIncite, /if statement
/squelch /face nolook fast
/delay 1
/disc Bazu
/delay 1
/varset Berated TRUE
}
/return
Sub Event_GotSummoned
/keypress back hold
/delay 5
/keypress back
/return
Sub Event_RaidMode
/if (${RaidMode}) {
/varset RaidMode FALSE
/if (${Verbose}) /echo RaidMode DEACTIVATED
} else {
/varset RaidMode TRUE
/if (${Verbose}) /echo RaidMode ACTIVATED
}
/return
Sub Event_Dead
/call Wait4Rez
/return
Sub Event_SetRaidMA(string Line,string NewRaidMA)
/varset RaidMA ${NewRaidMA}
/if (${Verbose}) /echo Now assisting ${RaidMA} for incoming Raid Targets
/return
Sub Event_SetPuller(string Line,string NewPuller)
/varset Puller ${NewPuller}
/target ${Puller}
/delay 2
/varset PullerID ${Target.ID}
/squelch /target clear
/if (${Verbose}) /echo Now assisting ${Puller} for incoming mob target!
/return
Sub Event_MobGate
/if (${Verbose}) ${Channel} ${Target.CleanName} is GATING! Stun/Mezz!
/return
Sub Event_MakeCamp
/varset HomeXLoc ${Me.X}
/varset HomeYLoc ${Me.Y}
/return
Sub Event_Enraged
/attack off
/delay 2
/varset Paused TRUE
/echo Mob is Enraged, turning off attack and waiting!
/return
Sub Event_EnragedOff
/attack on
/delay 2
/varset Paused FALSE
/echo Enrage off, attacking..
/return
Sub Event_TooFarAway
/if (${RaidMode}) {
/echo ** Too far away - Getting 10% closer now!
/varset Closeness ${Math.Calc[${Closeness}*0.9].Int}
/if (${Closeness}<20) /varset Closeness 20
/stick hold loose behindonce ${Math.Calc[${Target.MaxRangeTo} * ${Closeness} / 100]}
/return
}
/if (${Math.Distance[${HomeYLoc},${HomeXLoc}]} > 100) /call ReturnHome
/if (${Spawn[${TargetArray[4]}].ID} && ${Target.ID} != ${TargetArray[4]}) {
/squelch /target id ${TargetArray[4]}
/delay 1s ${Target.ID} == ${TargetArray[4]}
/squelch /stick 12 moveback
} else {
/squelch /stick 12 moveback
}
/return
Sub Event_GotHit
/if (!${Engaged} && !${Target.ID}) {
/target radius 15 npc
/varset Engaged TRUE
/call KillTarget
}
/return
Sub Event_NotStanding
/if (!${Engaged} || ${Target.ID}) /return
/call MoveAround
/target radius 60 npc
/call KillTarget
/return
Sub Event_NoSeeTarget
/if (!${Engaged} || ${Target.ID}) /return
/target radius 30 npc
/call KillTarget
/return
Sub Event_ManualLoot
/echo in manual loot
/call LootMobs
/return
Sub Event_MobDead
/delay 3
/if (${LootMobs}==1 && !${Me.Moving}) /call LootMobs
/call CheckForAdds
|/warp loc -1670 344 -165
/if (${Target.ID}) /return
/if (${Math.Distance[${HomeYLoc},${HomeXLoc}]} > 30) /call ReturnHome
/return
Sub Event_Zoned
/varset cz ${Zone}
/varset HomeXLoc ${Me.X}
/varset HomeYLoc ${Me.Y}
/return
Sub Event_CampCheck
/if (${cz.Find[Muramite Provinggrounds]}) {
/if (${Math.Distance[${Me.Y},${Me.X}:-4200,-1800]} < 400) /ooc Stormer at Realms.
}
/return
Sub Event_beepbeep
/beep
/delay 2
/beep
/delay 2
/beep
/return
Sub Event_Restart(string Line,string Sender)
/if (${ResetMasters.Find[${Sender}]}) {
/squelch /target clear
/delay 1s !${Target.ID}
/varset TargetArray[4] 0
/varset Engaged FALSE
/call ReturnHome
}
/return
Sub Event_AssistPuller
/if (${Spawn[${PullerID}].Distance} > 200) {
/gsay You're too far away from camp to assist!
} else {
/assist ${Puller}
/if (${Target.ID} && ${Target.ID} != ${Me.ID}) {
/face fast
/if (${DEBUG}) /echo Setting TargetArray
/varset TargetArray[1] ${Target.CleanName}
/varset TargetArray[2] ${Target.Level}
/varset TargetArray[3] ${Target.Name}
/varset TargetArray[4] ${Target.ID}
/varset SanityTimer 1m
} else /if (${Target.ID} == ${Me.ID}) {
/squelch /target clear
}
}
/return