• 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
RuppocSnakes.mac - Repeatable xp and faction grinding in House of Thule

Release RuppocSnakes.mac - Repeatable xp and faction grinding in House of Thule 1.1

No permission to download
Joined
Dec 31, 2005
RedCents
1,008¢
The following macro is for the task found in House of Thule: Thinning their numbers" Rotdogs and Snakes" quest. It is repeatable for faction and xp while grinding. I'm unsure the min level requirement to get the quest but in the lvl 85ish area, the xp in this zone is not bad. Hope you like and hope to improve over time and expand.

-Rustycat



Rich (BB code):
| Ruppocsnakes.mac Version 1.1 by Rustycat
|
| This macro assumes MQ2Reward, and MQ2MoveUtils are loaded. This is the start of a marco to
| set up camp in House of Thule south wall courtyard east side to grind xp while doing  
| Ruppoc Rockjumper's "Thinning Out Their Numbers: Rotdogs and Snakes" quest. Characters running
| this macro should be along the south wall and to the east side somewhere between midway
| east or further towards the corner and east wall when starting. Once in camp and set up with
| your group or solo, target the assist and launch. As you kill the mobs in the area, the
| macro will have the character run to Ruppoc, hail him to get a reward if he's already got
| the task completed, re-acquire the Rotdogs and Snakes quests, return back to his camp and
| launch instead his combat bot assisting. As they reash 8 task updates (4 snakes and 4
| rotdogs killed), it will run the route again for turn in, reacquire and restart indefinitely.
| Top stop the macro, you currently must /end macro manually or some failure stops it. To
| pause the macro, you can simple stop pulling mobs into the camp to kill. Use cautiously
| as there are not a lot of checks for dangers or errors currently in this release. There is
| much that can be improved and optimized in this macro I'm sure and as time allows and my
| learning continues, I will try to update and do just that either in this original work or
| in the larger scope project it may become a part of.
|________________________________________________________________________________________________
|
| ***WARNINGS***
| Please do not AFK macro using macroquest, if you do, you do so at your own risk.
| This macro is a test of concept and is under further development as both a learning tool
| and a stepping stone to larger scope ideas.
| Movements are limited at this time to try and add some randomness and you may get stuck and
| there are not checks to get you unstuck. More reason to again, not AFK macro this kind of
| thing.
| Group make up can be a large array but at least some crowd control is recommended for saftey
| for that "moment" you are not fully aware of what's going on and you get adds at a bad time.
|_________________________________________________________________________________________________
|
| ***Instructions***
| Take the macro you use for bot'ing your character for XP camps and make a copy of it. Save this
| copy as a .inc instead of the .mac (USE A COPY NOT YOUR ACTUAL MACRO). Edit the macro and find
| the "Sub Main" statement and rename "Main" to the name of the macro or something unique that
| you can set up a /call. In this default configuration, I've chosen to use kissassist.mac as my
| choice provided at redguides.com by Maskoi. Prop's goes to him and those guys for this great
| compilation of a macro. Other bot macro's can be use such as Raiddruid, Modbot, etc. Bot's using
| customizable .ini files are easiest to work with as you can set up the macro for it and then
| it would use the existing settings you use for that bot macro already without additional setup.
| I would suggest controlling the puller or tank with this macro so when a bot runs to do it's
| turn in and reacquires the quest, you dont' have accidental adds in the camp while everyone's
| running about. Once you selected the bot (if not KISSASSIST), you will need to edit the include
| reference at the top of the macro and the /call ... within the CombatTime sub. If you wish to use
| different bots on different characters, you will need to make more than one copy of this macro
| and name them seperately to configure for each at this time. Once configured to your choice
| of macro, you simply target who the main assist is for the character to use (this could be
| themselves depending on what you set up) and /mac ruppocsnakes.
|__________________________________________________________________________________________________

#turbo

| You can modify and config most combat/heal/pull etc macros to be this .inc as you pref.
#include kissassist.inc   

#Event Taskupdate "[MQ2] Task updated...('Thinning Out Their Numbers: Rotdogs and Snakes')"

Sub Main

/echo *********************************
/echo ** Thank you for using
/echo ** ruppocsnakes.mac by Rustycat.
/echo *********************************

| Declaring some variables ***intended to tie in .ini file for more control options per character
| for task counts, MA's, unique combat bot configurations, etc.

    /declare ${Me.Name}QuestStartingX int outer ${Me.X}
    /declare ${Me.Name}QuestStartingY int outer ${Me.Y}
    /declare ${Me.Name}RuppocAssist string outer ${Target.Name}
    /declare ${Me.Name}RuppocStage int outer 0

    /call ruppocsnakes

/return

|
|______________________________________________________________________________________________________

Sub ruppocsnakes

| Move to Quest Giver Ruppoc
   
    /call MoveToRuppoc

| Targeting Quest Giver and doing hails

    /call HailRuppoc

| Returns to camp start position from where macro was started

    /call ReturnToCamp

/return

|
|______________________________________________________________________________________________________

Sub MoveToRuppoc

    /echo Time to go to Ruppoc!

| Sets next moveto Y coordinate value a random distance off the south wall of zone

    /declare ${Me.Name}MoveToRuppocY int local
    /varcalc ${Me.Name}MoveToRuppocY -344+${Math.Rand[20]}

| Sets next moveto X coordinate value based on characters current location and moves some towards
| middle of zone to do turn in of quest and get quest again.

    /declare ${Me.Name}MoveToRuppocX int local
    /varcalc ${Me.Name}MoveToRuppocX ${${Me.Name}QuestingStartingX}+40

    /moveto loc ${${Me.Name}MoveToRuppocY}, ${${Me.Name}MoveToRuppocX}
    /delay 10
    /delay ${Math.Rand[10]}

    /face predict heading 90
    /delay ${Math.Rand[10]}

    /varset ${Me.Name}MoveToRuppocY -340+${Math.Rand[30]}
    /varset ${Me.Name}MoveToRuppocX -180+${Math.Rand[30]}

    /moveto loc ${${Me.Name}MoveToRuppocY}, ${${Me.Name}MoveToRuppocX}
    /delay 10
    /delay ${Math.Rand[10]}

    /varset ${Me.Name}MoveToRuppocY -320+${Math.Rand[30]}
    /varset ${Me.Name}MoveToRuppocX -70+${Math.Rand[30]}

    /moveto loc ${${Me.Name}MoveToRuppocY}, ${${Me.Name}MoveToRuppocX}
    /delay 20
    /delay ${Math.Rand[10]}
   

/return

|
|______________________________________________________________________________________________________

Sub HailRuppoc

    /moveto off
    /face Ruppoc
    /target Ruppoc
    /delay 5
    /delay ${Math.Rand[10]}


| Hail Ruppoc to accept XP reward completing quest if completed and get quest again to return to camp.

    /hail
    /delay 5
    /delay ${Math.Rand[10]}

| Checks to see if we have quest completed and if so accepts the XP reward

    /if (${Window[RewardSelectionWnd].Open}) /reward 2 1
    /delay 10
    /delay ${Math.Rand[10]}

| After reward check is complete, re-acquires quest Rotdog and Snake quest

    /say snakes
    /delay 5
    /delay ${Math.Rand[10]}

    /windowstate TaskWnd close
    /delay 5
    /delay ${Math.Rand[20]}


/return

|
|______________________________________________________________________________________________________

Sub ReturnToCamp

    /face heading 240

    /declare ${Me.Name}ReturnToCampY int local
    /declare ${Me.Name}ReturnToCampX int local

| Randomized location along the wall rather than going straight line to camp again

    /varset ${Me.Name}ReturnToCampY -345+${Math.Rand[40]}
    /varset ${Me.Name}ReturnToCampX -180-${Math.Rand[50]}

    /moveto loc ${${Me.Name}ReturnToCampY}, ${${Me.Name}ReturnToCampX}
    /delay 20
    /delay ${Math.Rand[10]}

| Takes character back to original starting point to do it all over again
    /echo Time to kill some more!
    /moveto loc ${${Me.Name}QuestStartingY}, ${${Me.Name}QuestStartingX}
    /delay 40
    /delay ${Math.Rand[40]}
    /face heading 0

    /call CombatTime

/return

|
|_____________________________________________________________________________________________________

Sub CombatTime

| Character is back at camp here so time to call the combat .inc you set up.
    /target ${${Me.Name}RuppocAssist}
    /call kissassist

/return

|
|_____________________________________________________________________________________________________

Sub Event_Taskupdate

     /varcalc ${Me.Name}RuppocStage ${${Me.Name}RuppocStage}+1
    /echo We've completed ${${Me.Name}RuppocStage} parts of our task.
    /bcg I've completed ${${Me.Name}RuppocStage} parts of my task.
    /delay 5   
    /delay 50
    /if (${${Me.Name}RuppocStage}==8) {
        /target ${${Me.Name}RuppocAssist}
        /mac ruppocsnakes
    }

/return

|
|_____________________________________________________________________________________________________
 
as I recall the level is 85, its a nice quest, most of the HoT zones have similar quests, I know there is 1 in Chelsith reborn just like that set, 3 quests I think... all repeatable.... its a nice bit of free exp
 
Chelsith reborn is also a low traffic area now so it's good for people who might not at the keyboard as much
 
Well done. As a suggestion, maybe save the starting location and use that for returning to camp, that way you could hunt the left side too? Of course the user needs to make sure there is a mostly clear path to Rupert. I do like how you use the event to start/stop kissassist, I wondered how you would do that.
 
Well done. As a suggestion, maybe save the starting location and use that for returning to camp, that way you could hunt the left side too? Of course the user needs to make sure there is a mostly clear path to Rupert. I do like how you use the event to start/stop kissassist, I wondered how you would do that.


Hey Wowfool... I actually wrote loops to do movements from anywhere along the south wall on either side. The issue is on the west side, there's a snake spawn that comes up between where you would camp and go to Ruppoc that has to be checked for and cleared. Once a character would go into the move to ruppoc mode, it would run right through that spot and depending on timing, agro the snake. For the time it takes to finish the hails and getting back to camp, a lower end character to the zone could potentially die. No active assist would take place until they were back in camp and restarted their combat mac/inc. You could babysit it if you were using a bard or chanter to pull with like I'd suggest and mezz the spawn while everyone is running if needed. This was one of the things I got hung up on when I moved to the next level on the macro development. I have a list of to do's that make this macro better.

* Unique character .ini file to better track task status, customize character specific combat launch inc/mac,
* Better movement system to account for camping spots and motion back and forth.
* Area check for agro, adds, etc while characters are running to do hails etc, possibly using an Event function when character takes dmg.etc.
* With better task tracking ability and above mentioned .ini support, possibly adding the other kill quests in the same update and hail system.

I've touched on and developed pieces of this although my inexperience on writing this stuff was bogging me down for completion. I have a larger macro where I have essentially working on parts of the above as well as taking this macro and making it an inc. I'll be starting an "idea" thread on it's initial work soon to share the break down of what I'm doing and ask for help with some of the elements from you guys that are better at this than me! :)

Thanks for the feedback guys!

Rustycat
 
I have an update for this almost ready to post on the stand alone but have two issues I'm trying to resolve.

The first is as I was testing, I realized the text parsing I was using to flag the task update was being echo'd from the KA combat macro's events as an include rather than MQ2 itself. When I used a different bot, I noticed this so I need to parse or differently. Concern is, can we have more than one event based off same parse information or does it create an issue? With KS, there's no issues with how I have it set up but the objective to use bot preferences becomes a problem without additional modifications to them or it etc.

The other issue I'm having is with a movement cycle I had changed. You would be able to camp anywhere along the south wall not just the one side. You would still need to care for that snake spawn on the west side going to ruppoc. I got something from the MQ2 forum's that I was trying to work off of that set the movement and would generate points going from where you were current to a point near ruppoc randomly. On the return trip however, I have something going on that stops short of the original start point each time. Got frustrated fighting with it the other day, so took a breather off it.

Up side is I have completed zone check to make sure you're in House of Thule, check to make sure you have a PC, Merc or Pet targeted for assist (stolen shamelessly from Maskoi's KA cuz it was just too clean not to use), and checks your location to ensure you're along the south wall so you're in a valid start point at start up.

A to do on this will be to add the other courtyard quests into the mix so you can get the spinners and guards etc while doing the grind. XP bonuses for everyone, yeah!

-Rustycat
 
Hello,

Here's my version of the same code purpose. It's a bit simpler as I just threw it together this morning, but it seems to be working nicely so far.

Rich (BB code):
#Event Ruppoc "#*#You gain party experience#*#"

Sub Event_Ruppoc

    /declare SavedXLoc int local ${Me.X}
    /declare SavedYLoc int local ${Me.Y}
    /declare SavedHeading int local ${Me.Heading.DegreesCCW}
    
    /echo Checking if it's Ruppoc time: 
    /if (!${Zone.ShortName.Equal[Thulehouse1]}) {
        /echo You're not even in the right zone.
        /return
    }
    /if (${Task.Select[Rotdogs and Snakes].Equal[NULL]}) {
        /echo Couldn't find task.
        /return
    }
    /if (!${Task.Objective.Find[Speak with Ruppoc]}) {
        /echo Task isn't completed yet.
        /return
    }
    /if (${Me.CombatState.Equal[COMBAT]}) {
        /echo I would run to ruppoc, but I'm still in combat.
        /return
    }
    
    /echo It's Ruppoc time!
    
    /tar ruppoc
    /moveto id ${Target.ID} mdist 60
    :StillMoving
    /if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMoving

    /h
    /delay 1s
    /say snakes
    /delay 1s
    /keypress Alt+Q
    /clean
    
    /moveto loc ${SavedYLoc} ${SavedXLoc} mdist 10
    /delay 1s
    :StillMovingBack
    /if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMovingBack
    /reward 1 1
    /face nolook heading ${SavedHeading}
    
/return
 
Hello,

Here's my version of the same code purpose. It's a bit simpler as I just threw it together this morning, but it seems to be working nicely so far.

Rich (BB code):
#Event Ruppoc "#*#You gain party experience#*#"

Sub Event_Ruppoc

    /declare SavedXLoc int local ${Me.X}
    /declare SavedYLoc int local ${Me.Y}
    /declare SavedHeading int local ${Me.Heading.DegreesCCW}
    
    /echo Checking if it's Ruppoc time: 
    /if (!${Zone.ShortName.Equal[Thulehouse1]}) {
        /echo You're not even in the right zone.
        /return
    }
    /if (${Task.Select[Rotdogs and Snakes].Equal[NULL]}) {
        /echo Couldn't find task.
        /return
    }
    /if (!${Task.Objective.Find[Speak with Ruppoc]}) {
        /echo Task isn't completed yet.
        /return
    }
    /if (${Me.CombatState.Equal[COMBAT]}) {
        /echo I would run to ruppoc, but I'm still in combat.
        /return
    }
    
    /echo It's Ruppoc time!
    
    /tar ruppoc
    /moveto id ${Target.ID} mdist 60
    :StillMoving
    /if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMoving

    /h
    /delay 1s
    /say snakes
    /delay 1s
    /keypress Alt+Q
    /clean
    
    /moveto loc ${SavedYLoc} ${SavedXLoc} mdist 10
    /delay 1s
    :StillMovingBack
    /if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMovingBack
    /reward 1 1
    /face nolook heading ${SavedHeading}
    
/return

Thanks for sharing this. I'm assuming you're taking this even and adding it to another bot of sorts and such with this approach? I started my format in a single layout similar to this and then broke it into multiple subs to allow other things I was trying to accomplish plus a learning format. If you don't mind, I might steal a little of this to use. One thing about the event, you have it parsing off the exp message, can you make that work using the task update message instead? I think you're task check on the object would clean up a lot of the hassle I was trying to track externally.
 
Thanks for sharing this. I'm assuming you're taking this even and adding it to another bot of sorts and such with this approach? I started my format in a single layout similar to this and then broke it into multiple subs to allow other things I was trying to accomplish plus a learning format. If you don't mind, I might steal a little of this to use.
Yes, I have this snippet in an include file that I call from Kissassist or my other expgrinder macros. Feel free to "steal", that's why I shared it

One thing about the event, you have it parsing off the exp message, can you make that work using the task update message instead? I think you're task check on the object would clean up a lot of the hassle I was trying to track externally.
It's of course easy to switch back, but I changed the event to listen on exp message instead of task update on purpose. This way, if I miss to trigger a task update event for some reason (lag or death or restarting macro) then it checks again after next kill instead of being stuck forever waiting for another task update.

Here's the updated event listener, I cleaned it up a little:
Rich (BB code):
Sub Event_Ruppoc

    /if (!${Zone.ShortName.Equal[Thulehouse1]}) /return

    /echo Checking if it's Ruppoc time: 

    /if (${Task.Select[Rotdogs and Snakes].Equal[NULL]}) {
        /echo Couldn't find task.
        /return
    }
    /if (!${Task.Objective.Find[Speak with Ruppoc]}) {
        /echo Task isn't completed yet.
        /return
    }

    /call TrexpChat "It's Ruppoc time!"
    /delay 1s

    /if (${Me.CombatState.Equal[COMBAT]}) {
        /echo I would run to ruppoc, but I'm still in combat.
        /beep
        /return
    }

    /tar npc ruppoc
    
    /if (${Target.Distance} > 1000) {
        /echo I would run to Ruppoc, but he's so far away. Am I killing snakes in the basement?
        /beep
        /return
    }
    
    /declare SavedXLoc int local ${Me.X}
    /declare SavedYLoc int local ${Me.Y}
    /declare SavedHeading int local ${Me.Heading.DegreesCCW}
    
    /moveto id ${Target.ID} mdist 60
    :StillMoving
    /if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMoving

    /h
    /delay 1s
    /say snakes
    /delay 1s
    /if (${Window[TaskWnd].Open}) /keypress Alt+Q
    /if (${Window[RewardSelectionWnd].Open}) /reward 2 2
    
    /moveto loc ${SavedYLoc} ${SavedXLoc} mdist 10
    /delay 1s
    :StillMovingBack
    /if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMovingBack
    /face nolook heading ${SavedHeading}
    /clean
    
/return
 
Rusty did you ever have another version of this? Need to grind out 40 turn ins of this. :)

- - - Updated - - -

Modified version that seems to be working for me. Note that this works with autocleric and kissassist, but seems to have some issues in afnuke. Not sure why. Important notes!!!

0 - Make a file named ruppoc.inc in your macros folder, paste the contents of the code into this file and add #include ruppoc.inc to your macro.
1 - be sure mq2reward plugin is loaded.
2 - the Quest/Task window needs to be opened in order for this to register completion properly, thus the calls to open the window should it be closed. It should also be on the Task list and not another tab. Someone who knows more about macros may be able to explain this.
3 - get the quest first before beginning (you only need to do this the first time).
4 - go to where you want to camp, begin your macros and enjoy!

Rich (BB code):
#Event Ruppoc "#*#You gain party experience#*#"

Sub Event_Ruppoc

	/if (!${Zone.ShortName.Equal[Thulehouse1]}) /return
	
	/declare QuestStatus
	/varset QuestStatus ${Task[thinning].Objective[3].Status}
		
	/if (!${Window[TaskWnd].Open}) /keypress Alt+Q
	
	/if (${Me.CombatState.Equal[COMBAT]}) {
	        	/echo Waiting till after combat.
	        	/return
	}
		
	/echo Checking if it's Ruppoc time: 
    		  
    	/if (${QuestStatus.Equal[NULL]}) {
        	/echo Task isn't completed yet.
        	/return
    	}

    	/echo "It's Ruppoc time!"
    	/delay 1s

    	/if (${Me.CombatState.Equal[COMBAT]}) {
        	/echo I would run to ruppoc, but I'm still in combat.
        	/beep
        	/return
    	}

    	/tar npc ruppoc
    
    	/if (${Target.Distance} > 1000) {
        	/echo I would run to Ruppoc, but he's so far away. Am I killing snakes in the basement?
        	/beep
        	/return
   	}
    
    	/declare SavedXLoc int local ${Me.X}
    	/declare SavedYLoc int local ${Me.Y}
    	/declare SavedHeading int local ${Me.Heading.DegreesCCW}
    
    	/moveto id ${Target.ID} mdist 60
    	:StillMoving
    	/if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMoving

    	/h
    	/delay 1s
    	/say snakes
    	/delay 1s
    	/if (!${Window[TaskWnd].Open}) /keypress Alt+Q
    	/if (${Window[RewardSelectionWnd].Open}) /reward 2 2
    
    	/moveto loc ${SavedYLoc} ${SavedXLoc} mdist 10
    	/delay 1s
    	:StillMovingBack
    	/if (${MoveTo.Moving} || ${Me.Moving}) /goto :StillMovingBack
    	/face nolook heading ${SavedHeading}
    	/clean
    
/return
 
Rusty did you ever have another version of this? Need to grind out 40 turn ins of this. :)

Hi Dreamflux... I had worked on an updated version of the macro I originally wrote. The macro was addressing a few things and to help appear less afk oriented with the random movements etc. The instructions of the actual marco are pretty well detailed within the file. The Event Include file is not my work but another kind contributor for a simpler concept. It worked pretty well also, less cumbersome code however is more obviously to onlooker's that your botting. If you're not AFK'n and paying attention to people coming and going in the zone, that's a non-issue. My macro coding for the new version was put to a stop as expected task/quest features were to be added to KISS down the road. The original intent was to do up the code to be compatible with that. If your modified Event Include is working, stick with it and thanks for sharing! :) Maybe some day I'll go back to this and release a newer version, just didn't have enough interest to incentive myself back to it. Thanks!
 
Yeah it's a very limited use macro since it's basically just used for a day and then it's done! I thought about adding in a random delay before running to Ruppoc, but didn't really care enough as I was for the most part watching it run while troubleshooting.

Now to write one to turn in HoT spells. Man that's an annoying process.
 
Yeah it's a very limited use macro since it's basically just used for a day and then it's done! I thought about adding in a random delay before running to Ruppoc, but didn't really care enough as I was for the most part watching it run while troubleshooting.

Now to write one to turn in HoT spells. Man that's an annoying process.

Do a search on these forums. There's a shard turn in macro that turns it in and sells the spells for the plat. If you're trying to acquire the variosu spells, it might just give you the pieces needed to do that for your own macro as well. I think most don't bother for the RkII spells there anymore as you max level, you are using different stuff anyhow later on.
 
Release RuppocSnakes.mac - Repeatable xp and faction grinding in House of Thule

Users who are viewing this thread

Back
Top
Cart