• IS THIS SITE UGLY? Click "RG3" at the very bottom-left of this page to change it. To dismiss this notice, click the X --->
Resource icon

Utility lazyrez.mac

|-------------------------------------------------------------------
| LazyRez.mac
| Adapted from LazyLobbyRez.mac by TreeHuginDruid
|
|-------------------------------------------------------------------

#turbo

|--------------------------------------------------------------------------------
|SUB: MAIN
|--------------------------------------------------------------------------------
Sub Main

/declare SoulStoneMerchant string outer "A Disciple of Luclin"
/declare CorpseSummoner string outer "A Priest of Luclin"
/declare RangeDist int outer 8
/declare SoulStoneName string outer
/declare bag string outer
/declare slot string outer
/declare ItemToGet string outer
/declare MercClass string outer
/declare i int outer

/squelch /target clear
/delay 10

/call PluginCheck
/call CheckSoulstone
/call BuySoulstone
/call GiveSoulstone
/call PcRez
/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: CheckSoulstone
|--------------------------------------------------------------------------------
Sub CheckSoulstone
/if (${Me.Level}<=110) /varset SoulStoneName Draconic Soulstone
/if (${Me.Level}<=105) /varset SoulStoneName Torrential Soulstone
/if (${Me.Level}<=100) /varset SoulStoneName Coalescent Soulstone
/if (${Me.Level}<=95) /varset SoulStoneName Luminous Soulstone
/if (${Me.Level}<=90) /varset SoulStoneName Phantasmal Soulstone
/if (${Me.Level}<=85) /varset SoulStoneName Iridescent Soulstone
/if (${Me.Level}<=80) /varset SoulStoneName Prismatic Soulstone
/if (${Me.Level}<=75) /varset SoulStoneName Glowing Soulstone
/if (${Me.Level}<=70) /varset SoulStoneName Pristine Soulstone
/if (${Me.Level}<=55) /varset SoulStoneName Faceted Soulstone
/if (${Me.Level}<=50) /varset SoulStoneName Greater Soulstone
/if (${Me.Level}<=40) /varset SoulStoneName Soulstone
/if (${Me.Level}<=30) /varset SoulStoneName Lesser Soulstone
/if (${Me.Level}<=20) /varset SoulStoneName Minor Soulstone

/delay 10

/echo Soulstone for my level (${Me.Level}) is (${SoulStoneName}).

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: BuySoulstone
|--------------------------------------------------------------------------------
Sub BuySoulstone

/if (${FindItem[${SoulStoneName}].ID}) {
/echo I already have a (${SoulStoneName}).
} else {
/echo I have to buy a (${SoulStoneName}).

/target ${SoulStoneMerchant}
/delay 10

|--------------------------------------
/if (${Target.ID} && ${Target.CleanName.Equal[${SoulStoneMerchant}]}) {
/echo Moving to (${SoulStoneMerchant}).
/moveto id ${Target.ID} mdist ${RangeDist}
/delay 2s ${Me.Moving}

:NoMovement1
/if (${Me.Moving}) {
/delay 2
/if (${Me.Moving}) /goto :NoMovement1
}

:OpenGiveWindowA
/nomodkey /click right target
/delay 5s ${Window[MerchantWnd].Open}
/if (!${Window[MerchantWnd].Open}) /goto :OpenGiveWindowA

/if (${Window[MerchantWnd].Open}) {
/delay 5s
/varset ItemToGet ${Window[MerchantWnd].Child[ItemList].List[=${SoulStoneName},2]}
/delay 1s
}

/if (!${ItemToGet}) {
/echo I couldn't find (${SoulStoneName}) to purchase!
/end
} else {
/echo Found (${SoulStoneName}) to purchase!
/notify MerchantWnd ItemList listselect ${ItemToGet}
/delay 10
/notify MerchantWnd ItemList LeftMouseUp ${ItemToGet}
/delay 10
/nomodkey /notify MerchantWnd MW_Buy_Button LeftMouseUp
/delay 10
}

:CloseMerchantWnd1
/if (${Window[MerchantWnd].Open}) {
/nomodkey /notify MerchantWnd MW_Done_Button LeftMouseUp
/delay 10
/if (${Window[MerchantWnd].Open}) /goto :CloseMerchantWnd1
}
}
|--------------------------------------
}

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: GiveSoulstone
|--------------------------------------------------------------------------------
Sub GiveSoulstone

/target ${CorpseSummoner}
/delay 10

/if (${Target.ID} && ${Target.CleanName.Equal[${CorpseSummoner}]}) {
/echo Moving to (${CorpseSummoner}).
/moveto id ${Target.ID} mdist ${RangeDist}
/delay 2s ${Me.Moving}

:NoMovement2
/if (${Me.Moving}) {
/delay 2
/if (${Me.Moving}) /goto :NoMovement2
}

|---
/if (${Target.Distance}<=${RangeDist}) /call GrabSoulstone
|---

|---------------------------------------------------
/if (${Cursor.ID} && ${Cursor.Name.Equal[${SoulStoneName}]}) {
|--------------
/echo I have (${SoulStoneName}) on my cursor.
/echo Giving (${Cursor.Name}) to (${Target.CleanName}).

:OpenGiveWindowB
/nomodkey /click left target
/delay 5s ${Window[GiveWnd].Open}
/if (!${Window[GiveWnd].Open}) /goto :OpenGiveWindowB

:GiveSoulStone
/if (${Window[GiveWnd].Open}) {
/notify GiveWnd GVW_Give_Button leftmouseup
/delay 3s
/if (${Window[GiveWnd].Open}) /goto :GiveSoulStone
}

:CloseInvWnd
/if (${Window[InventoryWindow].Open}) {
/nomodkey /notify InventoryWindow IW_DoneButton LeftMouseUp
/delay 5
/if (${Window[InventoryWindow].Open}) /goto :CloseInvWnd
}
|--------------
} else {
/echo I couldn't find (${SoulStoneName}) on my cursor!
/end
}
|---------------------------------------------------

/if (${Window[InventoryWindow].Open}) /nomodkey /notify InventoryWindow IW_DoneButton LeftMouseUp
/delay 5

/squelch /target clear
/delay 10
}

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: GrabSoulstone
|--------------------------------------------------------------------------------
Sub GrabSoulstone

/echo Attempting to grab (${SoulStoneName}).

/if (!${Window[InventoryWindow].Open}) /keypress Inventory
/delay 5

/itemnotify "${SoulStoneName}" leftmouseup
/delay 5

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: Revive Merc
|--------------------------------------------------------------------------------
Sub ReviveMerc

:MercReviveLoop
/if (!${Mercenary.State.Equal[ACTIVE]}) {
/echo Attempting to revive my mercenary.
/nomodkey /notify MMGW_ManageWnd MMGW_SuspendButton LeftMouseUp
/delay 3s
}
/if (!${Mercenary.State.Equal[ACTIVE]}) {
/echo Waiting until mercenary can be revivied.
/goto :MercReviveLoop
} else {
/varset MercClass ${Mercenary.Class}
/echo My mercenary's calss is (${MercClass}).
}

|-----------------------------------------------------
|---------------- Check to make sure merc is a healer!
|-----------------------------------------------------
/if (${MercClass.NotEqual[Cleric]}) {
/for i 1 to 8
/echo Looking at merc slot (${i}), (${Window[MMGW_ManageWnd].Child[MMGW_OwnedListBox].List[${i},2]}).
|/notify MMGW_ManageWnd MMGW_OwnedListBox listselect ${i}
/if (${Window[MMGW_ManageWnd].Child[MMGW_OwnedListBox].List[${i},2].Find[Healer]}) {
/echo FOUND A HEALER! - (${Window[MMGW_ManageWnd].Child[MMGW_OwnedListBox].List[${i},2]})
/echo Switching mercenary to:(${Window[MMGW_ManageWnd].Child[MMGW_OwnedListBox].List[${i},2]}).
/notify MMGW_ManageWnd MMGW_OwnedListBox listselect ${i}
/notify MMGW_ManageWnd MMGW_SwitchButton leftmouseup
/delay 10
/return
}
/delay 10
/next i
}
|-----------------------------------------------------

|---------------- Check to make sure merc stance is not passive!
/if (${Mercenary.Stance.Equal[Passive]}) /stance Balanced

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: TakeRez
|--------------------------------------------------------------------------------
Sub TakeRez

|---------------- Check to make sure merc stance is not passive!
/if (${Mercenary.Stance.Equal[Passive]}) /stance Balanced

/echo Accepting rez if available.
/delay 6s

:RezWait
/if (${Window[ConfirmationDialogBox].Open} && (${Spawn[${Me.ID}].Type.Equal[Corpse]})) {
/echo I have a rez box, accepting now.
/nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup
/delay 2s
/multiline ; /echo Respawning ; /notify RespawnWnd RW_OptionsList listselect 2 ; /notify RespawnWnd RW_SelectButton leftmouseup
/delay 10
/return
} else {
/echo Waiting 6 seconds for a rez.
/delay 6s
}

/if (${Spawn[${Me.ID}].Type.Equal[Corpse]}) /goto :RezWait

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: Suspend Merc
|--------------------------------------------------------------------------------
Sub SuspendMerc

:MercSuspendLoop
/if (${Mercenary.State.Equal[ACTIVE]}) {
/echo Suspending Mercenary.
/nomodkey /notify MMGW_ManageWnd MMGW_SuspendButton LeftMouseUp
/delay 3s
}
/if (${Mercenary.State.Equal[ACTIVE]}) /goto :MercSuspendLoop

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: PluginCheck
|--------------------------------------------------------------------------------
Sub PluginCheck

/echo Checking for required plugins . . .

/if (!${Plugin[MQ2MoveUtils].Name.Equal[MQ2MoveUtils]}) {
/echo Loading MQ2MoveUtils plugin, because this macro requires it !
/squelch /plugin MQ2MoveUtils load
/delay 1s
/if (!${Plugin[MQ2MoveUtils].Name.Equal[MQ2MoveUtils]}) {
/beep
/echo Unable to load MQ2MoveUtils plugin, quiting.
/end
}
} else {
/echo MQ2MoveUtils plugin is loaded.
}

/echo Plugin check complete . . .

/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: LogMeOut
|--------------------------------------------------------------------------------
Sub LogMeOut

/echo Time to camp out!
/keypress forward
/beep
/if (!${Me.Sitting} && !${Me.Mount.ID}) /sit
/delay 45s
/camp desktop
/endmacro

/return
|--------------------------------------------------------------------------------
|--------------------------------------------------------------------------------
|SUB: PcRez
|--------------------------------------------------------------------------------
Sub PcRez

/echo Checking if I'm a healer
/if (${Me.Class.Name.Equal[Cleric]} || ${Me.Class.Name.Equal[Shaman]} || ${Me.Class.Name.Equal[Druid]}) {
/echo I, ${Me.Name}, am a ${Me.Class.Name} so waiting a few extra seconds ...
/if (!${Me.Sitting} && !${Me.Mount.ID}) /sit
/delay 5s
/declare gn int local 0
/for gn 1 to 5
/target ${Spawn[corpse ${Group.Member[${gn}].Name}]}

/echo ${Group.Member[${gn}].Name} ${Target} Type: ${Target.Type} ${Target.Type.Equal[corpse]}
/if (${Target.Type.Equal[corpse]} ) {
/echo detected corpse
/call DoRez
} else {
/echo no corpse detected for ${Group.Member[${gn}].Name}
/delay 1s
}

/keypress ESC
/next gn

/target ${Spawn[corpse ${Me.Name}]}
/call DoRez
/echo done
} else {
/echo Not a healer so just gonna chill and wait for rez
}


/if (!${Me.Sitting} && !${Me.Mount.ID}) /sit
/return
|--------------------------------------------------------------------------------

|--------------------------------------------------------------------------------
|SUB: DoRez
|--------------------------------------------------------------------------------
Sub DoRez
/echo DoRez on ${Target.Name}
/if (${Me.Class.Name.Equal[Cleric]}) {
/while (!${Me.AltAbilityReady[Blessing of Resurrection]}) {
/if (!${Me.Sitting} && !${Me.Mount.ID}) /sit
/delay 1s
}
/aa act Blessing of Resurrection
} else {
/while (!${Me.AltAbilityReady[Rejuvenation of Spirit]}) {
/if (!${Me.Sitting} && !${Me.Mount.ID}) /sit
/delay 1s
}
/aa act Rejuvenation of Spirit
}
/delay 3s
/return
|--------------------------------------------------------------------------------
| [+++ Formatted by MQ2fusing tabs for indents +++]
Top