• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
Resource icon

Release lazyrez.mac

tucker

Member
Joined
Sep 24, 2016
RedCents
413¢
Still a work in progress as I should probably reintroduce the mq2rez independence. I have not tested the druid/shm. Note that some of the delays are higher to make it more tolerant of my slower computer.
Rich (BB code):
|-------------------------------------------------------------------
| 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}<=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 +++]
 
| [+++ Formatted by MQ2fusing tabs for indents +++] ?????

Do tell .. interested in this MQ2fusing,

And YES ... you CAN bastardize my macro for your modded use .... ( beady eyed stare ) ( slap slap )
 
| [+++ Formatted by MQ2fusing tabs for indents +++] ?????

Do tell .. interested in this MQ2fusing,

And YES ... you CAN bastardize my macro for your modded use .... ( beady eyed stare ) ( slap slap )

I have no idea as I copied it from you!
 
I couldn't find a torrential soulstone on my cursor!

This is on my good computer too. Is this overactive auto inventory stuff from built-in plugins?
 
For rezzing with mercs, you need to check to see if there is room in the group before trying to revive or unsuspend the merc, also make sure the person isn't in a raid.
 
tucker updated lazyrez.mac with a new update entry:

added 110 soulstone

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

#turbo

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

/declare SoulStoneMerchant string outer "A Disciple of Luclin"
/declare...

Read the rest of this update entry...
 
Added a loop for giving soulstone because that was failing for me on chars with bards in group

Code:
|-------------------------------------------------------------------
| 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
    /afollow off
    /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
        }
    :GrabMySoulStone

    |---
        /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!
            /delay 1s
            /goto :GrabMySoulStone
        }
    |---------------------------------------------------

        /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: 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 +++]
 
Solid question, I have a bard in my group 100% of the time and haven't had it fail to give the item myself.
I'd also be interested to know if it was the bard that had issues, or other characters where bards were present in the group.
I did a compare to your copy of the macro and the LazyLobbyRez.mac that comes with live and I see where you added the loop to it, replacing the /end with an indefinite recheck for the item.
It might be more intuitive to verify you have the item in your inventory with a a ${FindItemCount[=${SoulStoneName}]} before proceeding with the loop if that is the route you choose to use. That way if you failed to purchase the item in the first place (because as I understand it, the purpose for this is added delays due to a slower system) it won't get stuck looping that spot forever.
 
Last edited:
I honestly have never figured out why it never worked with that particular group. I assumed it was the extra speed from selo's + lag.

I think the item check is a good suggestion. I also want to put something to broadcast when a char does not have enough money for a soulstone:p
 
Yeah I think people trying to buy stones without cash was mentioned previously as something they'd like to see sorted out. I don't suppose that would be complicated to put in there and can at least let people know when they need to give their alts some money without a lot of trying to figure it out on their own.
 
i updated this to use mq2nav

Code:
| 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}).
/nav 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}).
/nav 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[MQ2Nav].Name.Equal[MQ2Nav]}) {
/echo Loading MQ2Nav plugin, because this macro requires it !
/squelch /plugin MQ2Nav load
/delay 1s
/if (!${Plugin[MQ2Nav].Name.Equal[MQ2Nav]}) {
/beep
/echo Unable to load MQ2Nav plugin, quiting.
/end
}
} else {
/echo MQ2Nav 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
 
Release lazyrez.mac

Users who are viewing this thread

Back
Top
Cart