• 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

fishing

Joined
Sep 20, 2014
RedCents
554¢
I know in the out of date thread people were asking for a fishing macro. I found 2 of them

This one only works in abysmal sea
Rich (BB code):
Fishing.mac version 1.0
|
| Written by Armysoldier
|
| March 5 2006
|
| Modifications:
|
| Some of the code was pulled from other macros and modified and manipulated 
| to do the tasks set forth.
|
| This code is designed for Abysmal Sea
|
| *** FOR THIS CODE TO WORK ***
| You need to Stand infront of Duath Untez (ACROSS HALL FROM BANKERS)
| You need to be in the first person view
| the 5 FILES need to be in the macro\common folder (see includes below)



#event BrokenPole "#*#You can't fish without a fishing pole#*#"
#Event BrokenPole "#*#You need to put your fishing pole#*#"
#event NoBait "#*#You can't fish without fishing bait#*#"
#event End "#*#can not afford#*#"
#Event Skillup "#*#become better at#*#"
#Event Holding "#*#can't fish while holding#*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc
#include common/CommonSubs.inc


Sub Main
    /declare OldSkill int outer
    /declare SkillMaxWanted int outer
    /declare i int outer
    /declare MerchantNameA string Outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Fishing]}
    /declare EndingVar int outer 1


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Customize these settings if you want
|                    
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    /varset MerchantNameA "Duath Untez" 
    /varset SkillMaxWanted 200 
    /varset DelayMult 1
    /declare Filename string outer Fishing.ini



|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Call Read INI for locations array
|                    
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    /call ReadINIA ${Filename} "Abysmal Sea" 
    /if (!${Defined[LocArray]}) { 
       /echo No Loc Array Created...
       /endmacro 
    } 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Begin 
|
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :start

|--- Check Current Skill against Skill wanted 
    /echo Fishing is at ${Me.Skill[Fishing]}

    /if (${Me.Skill[Fishing]}>=${SkillMaxWanted}) {
      /echo Fishing is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Buy Components
|
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

:start
    /target ${MerchantNameA}

    /nomodkey /click right target

    /delay 5s ${Window[MerchantWnd].Open}

    /call OpenPacks

    /delay ${Math.Calc[${DelayMult}*1]}s

    /call Buy "Fishing Bait" 100

    /if (${FindItemCount[=Fisherman's Companion]}<1) /call Buy "Fishing Pole" 5

    /nomodkey /notify MerchantWnd MW_Done_Button LeftMouseUp

    /call ClosePacks

    /echo Moving to the Beer Spot

    /call Movement 2 14 6
    /face loc 512,190

    :fish
    /doability Fishing
    /delay 75
    /if (${Me.AbilityReady["Fishing"]}) {
            /if (${Cursor.ID}) {
            /if (${Cursor.Name.Equal[Tattered Cloth Sandal]}) {
            /destroy
            /delay 1s
        } else {
            /if (${Cursor.Name.Equal[Rusty Dagger]}) {
                /destroy
                /delay 1s
            } else {
            /echo Caught ${Cursor.Name}
            /call ClearCursor
            }
         }
       }
     }
    /doevents
    /if (${EndingVar}==1) /goto :fish
/goto :start
/return
    

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Broken Pole
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

Sub Event_BrokenPole
   /if (${FindItemCount[=Fishing Pole]}>0) {
   /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*1]}s
   /nomodkey /ctrl /itemnotify ${FindItem[=Fishing Pole].InvSlot} leftmouseup
   /delay ${Math.Calc[${DelayMult}*2]}s
      /Call ClearCursor
   /call ClosePacks
   /return
   } Else {
   /if (${FindItemCount[=Fisherman's Companion]}>0) {    
   /nomodkey /ctrl /itemnotify ${FindItem[=Fisherman's Companion].InvSlot} Rightmouseup
   /delay ${Math.Calc[${DelayMult}*10]}s
      /Call ClearCursor
   /return
   } Else {
   /echo Need to buy fishing poles
   /echo Moving to Duath
   /call Movement 15 26 22
   /varset EndingVar 2
   /return
   }
}
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Time to buy more bait
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_NoBait
   /echo Need to buy bait
   /echo moving to Duath
   /call Movement 15 26 22
   /varset EndingVar 2
   /return
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Skill up
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Skillup
        /if (${Me.Skill[Fishing]}>${OldSkill}) {
        /echo Your Fishing Went Up!! It's now ${Me.Skill[Fishing]}!
        /varset OldSkill ${Me.Skill[Fishing]}
        }
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Holding something
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Holding
      /Call ClearCursor
/return


This one works anywhere but will camp out when you run out of bait.
----Update----
This one was already in the macro folder.
--------

not sure if they will still work I just remembered them while I was sitting here at work and thought i would post them since people were asking for a fishing mac. I will give full credit to the authors. I have had these for 10 years sitting on an external hard drive.
 

Attachments

Last edited:
What enhancements or changes are looking to be made to these? Is one preferred over the other for some reason?
 
Someone was asking for a fishing macro. I don't know if these will work with the current iteration lots of the macros were affected and no longer work.
 
Hello all,

This is based on the fish.mac file that comes with macroquest. Originally by Yoda, updated by DKAA, and the latest changes are by me.

So here is what I have come up with. There are a few new features, and some minor enhancements/changes.

Copy the code into "\Release\Macros\fish.mac" file and then use the following commands in-game:

  • /macro fish - Force fishing to continue until error or /endmacro is issued.
  • /macro fish 50 - Train until fishing skill reaches 50.
  • /macro fish help - Print out simple in-game help on usage of the macro.

1) One of the things I added to the macro is for it to check for a fishing pole, and equip it if its not equipped. This is done using MQ2Exchange and whatever you had in your primary slot will be remembered. Once the macro is complete we will try to re-equip whatever you had in your primary slot. **Only works if training to a skill level and it reaches that level. If you /endmacro early you'll have to manually switch back.**

2) This comes with a bonus of detecting when a fishing pole breaks. It will try to equip another fishing pole if you have one in your inventory. I leveled up 2 toons to 100 each and wasn't able to test this. ** PLEASE REPORT ON THIS IF YOU CAN. I DID NOT GET TO TEST THIS.**

3) There is now an array to auto destroy junk you do not wish to keep while fishing. There are instructions in the code below, but basically adjust the size of the array, and the entries in the array to match against stuff to destroy. If it is not matched (if it's not in the array) any item you catch will be added to your inventory.

Nothing was really "wrong" with the fish.mac file when I found it, but I think the extensions help make it just a bit better than how I found it.

Please note: MQ2Exchange is now required for this macro. It is included with the RG VV compile. Please be sure its loaded if you are experience any issues (or you may just equip the Fishing Pole yourself and it will not be used).

If there is something you would like to see added please let me know. Please report any issues you encounter with the macro.

-orkim

Rich (BB code):
|*******************************************************************|
| - fish.mac -                                                     *|
| - By: Yoda                                                       *|
| - v2.0 by DKAA                                                   *|
| - v2.0.1 by orkim  (Nov 7, 2017)                                 *|
|     Cleaned up and extended functionality from original fish.mac *|
|     Extended to re-equip fishing pole if pole breaks             *|
|                                                                  *|
|                                                                  *|
| Usage:                                                           *|
|  Head to Angler Winifred (or another fishing merchant) and pick  *|
|  up a Fishing Pole (or two) and a stack of Fishing Bait. Head to *|
|  some place to fish, face the water, and start the macro.        *|
|                                                                  *|
|  There are some configureable settings down below. You may add   *|
|  items to the AutoDestroy[] array to have them automactially     *|
|  destroyed (duh!) as you catch them.  Anything not in that array *|
|  will be put in your inventory.                                  *|
|                                                                  *|
|  /macro fish  (forces fishing until you /endmacro)               *|
|  /macro fish 10 (fish until skill of 10 is reached)              *|
|  /macro fish help (prints help out in game)                      *|
|                                                                  *|
|  Please report any errors or suggestions for improvements to the *|
|  RedGuides forum.                                                *|
|*******************************************************************|

#warning
#turbo 20

#event PrimaryHand "You need to put your fishing pole in your primary hand."
#event NoPole "You can't fish without a fishing pole, go buy one."
#event NoBait "You can't fish without fishing bait, go buy some."
#event SkillUp "You have become better at Fishing! (#1#)"

| ------------------------------------------------------------------------------
| SUB: Main
|
| Main execution begins here.
| ------------------------------------------------------------------------------
Sub Main(string cmd)
    /declare MainHandItem string outer
    
    | ------------------------
    | ** BEGIN USER ADJUSTABLE SETTINGS **
    |
    | Adjust the size of the array on the following line if you wish to add more
    | items to the destory list.  Add additional /varset lines below containing
    | the names of the items.
    
    | :: The number here is the length of the array below.
    /declare AutoDestroy[3] string outer
    
    | :: Each entry in the array. We destroy matching items.
    /varset AutoDestroy[1] "Rusty Dagger"
    /varset AutoDestroy[2] "Tattered Cloth Sandal"
    /varset AutoDestroy[3] "Fish Scales"
    
    | ** END USER ADJUSTABLE SETTINGS **
    |-------------------------
    
    /declare destroy_flag int local 0
    /declare forced_fishing int outer 0
    /declare desired_skill int outer 0
    
    | Print out our start text.
    /echo Starting fish.mac by Yoda, DKAA, and orkim.

    | Check arguments.
    /if (${cmd.Length} == 0) {
        | Force fishing.
        /echo Fishing until stopped or error occurs.
        /varset forced_fishing 1

    } else /if (${Int[${cmd}]} > 0 && ${Int[${cmd}]} <= ${Me.SkillCap[Fishing]}) {
        /varset desired_skill ${Int[${cmd}]}
                
        /if (${Me.Skill[Fishing]} >= ${desired_skill}) {
            /echo Fishing skill at at ${Me.Skill[Fishing]}/${Me.SkillCap[Fishing]}.
            /echo Fishing skill above desired skill of ${desired_skill}.
            /echo Exiting macro.
            /endmacro
        } else {
            /echo Fishing until desired skill level of ${desired_skill} is reached.
        }
    } else {

        /echo Use "/macro fish" to fish until an error occurs or stopped.
        /echo Use "/macro fish 25" to train fishing to 25 and stop.
        /endmacro

    }
    
    :Fish
        | Check for skill up events..
        /doevents
        
        /call CheckPole

        /doability Fishing

        | Check for pole/bait events..
        /doevents
        
        /delay 65

        | If there is nothing on the cursor...
        /if (!${Cursor.ID}) {
            /goto :Fish
        }

        | Check if we should keep or destory this item...
        /call CheckDestroy

        /varset destroy_flag ${Macro.Return}

        /if (${destroy_flag}) {
            | Destroy this item...
            /echo Caught "${Cursor.Name}". Destroying.
            /destroy
            /delay 5
        } else {
            | Keep this item...
            /echo Caught "${Cursor.Name}". Storing in inventory.
            /autoinventory
        }
        /goto :Fish
    /return

| ------------------------------------------------------------------------------
| SUB: ExitFishing
|
| All exits should route through this sub as it will handle switching back to
| the originally equipped item.
| ------------------------------------------------------------------------------
Sub ExitFishing
    | Swap back if we can.
    /if (${MainHandItem.Length}) {
        /exchange "${MainHandItem}" mainhand
    }
    
    | End now...
    /endmacro

| ------------------------------------------------------------------------------
| SUB: CheckDestroy
|
| Return 1 if the item on the cursor is in our AutoDestroy[] array.
| Return 0 if not found in the array.
| ------------------------------------------------------------------------------
Sub CheckDestroy
    /declare i int local 0
    /declare entry string local
    /for i 1 to ${AutoDestroy.Size}
        /varset entry ${AutoDestroy[${i}]}
        /if (${Cursor.Name.Equal[${entry}]}) {
            /return 1
        }
    /next i
    /return 0

| ------------------------------------------------------------------------------
| SUB: CheckPole
|
| Check for, and optionally equip, a fishing pole.  This also handles equiping
| a backup pole should one break.
| ------------------------------------------------------------------------------
Sub CheckPole
    | If already equipped we're good.
    /if (${Me.Inventory[mainhand].Name.Find[Fishing Pole]}) {
        /return
    }
    
    | Save what we're holding (if we haven't yet).
    /if (${MainHandItem.Length} == 0) {
        /varset MainHandItem ${Me.Inventory[mainhand].Name}
    }
    
    | Try to eqip with MQ2Exchange
    /exchange "Fishing Pole" mainhand

    | Short delay before checking agian.
    /delay 5
    
    | Check if we're equipped now.
    /if (${Me.Inventory[mainhand].Name.Find[Fishing Pole]}) {
        /return
    }
    
    | Swap back if we can.
    /if (${MainHandItem}) {
        /exchange "${MainHandItem}" mainhand
    }
    
    | Error out
    /echo It doesn't look like you have a Fishing Pole! Go buy one!
    /call ExitFishing
    /return
    
| ------------------------------------------------------------------------------
| SUB: Event_PrimaryHand
| ------------------------------------------------------------------------------
Sub Event_PrimaryHand
    /echo It appears we do not have a fishing pole in our hand?!? Exiting macro. Report me!
    /call ExitFishing

| ------------------------------------------------------------------------------
| SUB: Event_NoPole
| ------------------------------------------------------------------------------
Sub Event_NoPole
    /echo You need to go buy a fishing pole!
    /call ExitFishing


| ------------------------------------------------------------------------------
| SUB: Event_NoBait
| ------------------------------------------------------------------------------
Sub Event_NoBait
    /echo You need to go buy fishing bait!
    /call ExitFishing


| ------------------------------------------------------------------------------
| SUB: Event_SkillUp
| ------------------------------------------------------------------------------
Sub Event_SkillUp(string line, int value)
    /echo You have become better at Fishing! (${value}/${Me.SkillCap[Fishing]})
    
    | See if we should do skill up checks.
    /if (${forced_fishing}) {
        /return
    }
    
    | Check if we have reached our desired level (optional).
    /if (${desired_skill}) {
        /if (${value} >= ${desired_skill}) {
            /echo Reached desired Fishing skill of ${desired_skill}. Exiting.
            /call ExitFishing
        }
    }
    
    | Check if we have reached our level cap.
    /if (${value} >= ${Me.SkillCap[Fishing]}) {
        /echo Reached skill cap for Fishing of ${desired_skill}. Exiting.
        /call ExitFishing
    }
    
    /return
    
|  [+++  Formatted by MQ2fusing tabs for indents +++]
 
Hoosierbilly wrote one a while back that does all sorts of great stuff:

Rich (BB code):
|**
AutoFish.mac by hoosierbilly  May 2017

AFK protected: Autoloads and sets up MQ2Posse to /exit the game if any strangers approach within 750.
Uses ninjadvloot.inc v6.06 to manage your catches
Uses fisherman's companion to summon fishing poles, if you have it
Uses Anizok's Bait Dispenser to create bait, if you have it ** Must be in bag slot 10 **
fresh fish is the default for creating bait, this can be changed using the baitfish variable
the varible maxbait will determine how much bait to make, default is 100
will summon food and drink using Fresh Cookie Dispenser and Spiced Iced Tea Dispenser / Warm Milk Dispenser, if you have them

**|

#include ninjadvloot.inc
	
#Event BrokenPole "#*#You can't fish without a fishing pole, go buy one.#*#"
#Event BrokenPole "#*#You need to put your fishing pole in your primary hand.#*#"
#Event NoBait "#*#You can't fish without fishing bait, go buy some.#*#"
#Event clearcursor "#*#You can't fish while holding something#*#"
#Event camp "#*#prepare your camp#*#"
#Event MilkandCookie "#*#You are low on #1#.#*#"
#Event MilkandCookie "#*#You are out of #1#.#*#"

| --------------------------------------------------------------------------------------------
| SUB: Main
| --------------------------------------------------------------------------------------------
	Sub Main
	/declare FeedSpam	timer	outer	0
	/declare baitfish	string	outer	fresh fish
	/declare maxbait	int		outer	100

	/call SetupAdvLootVars
	
	/if (${Plugin[MQ2Log].Name.Length}) /mlog off
	/if (!${Plugin[MQ2Posse].Name.Length}) /plugin mq2posse
	/if (${Plugin[MQ2Posse].Name.Length}) /posse on
	/if (${Plugin[MQ2Posse].Name.Length}) /posse radius 750
	/if (${Plugin[MQ2Posse].Name.Length}) /posse zradius 30
	/if (${Plugin[MQ2Posse].Name.Length}) /posse friendnotify off
	/if (${Plugin[MQ2Posse].Name.Length}) /posse guild off
	/if (${Plugin[MQ2Posse].Name.Length}) /posse cmddel 1	
	/if (${Plugin[MQ2Posse].Name.Length}) /posse cmddel 1
	/if (${Plugin[MQ2Posse].Name.Length}) /posse cmdadd "/endmac"
	/if (${Plugin[MQ2Posse].Name.Length}) /posse cmdadd "/exit"
	/if (${Plugin[MQ2Log].Name.Length}) /mlog on

	/call Event_BrokenPole
	/echo You are using ${baitfish} to create bait.

:Fish
	/if (${Me.AbilityReady[Fishing]}) /doability Fishing
	/delay 10
	/doevents
	/delay 2s !${Cursor.ID}
	/goto :Fish
	/return

| --------------------------------------------------------------------------------------------
| SUB: Event_BrokenPole
| --------------------------------------------------------------------------------------------
Sub Event_BrokenPole

	/if (${Me.Inventory[mainhand].Name.Find[Fishing Pole]}||${Me.Inventory[mainhand].Name.Find[Brell's Fishin' Pole]}) /return

	/if (${FindItem[=Fisherman's Companion].ID}) {
		/itemnotify "Fisherman's Companion" rightmouseup
		/delay 10s
		/delay 2s ${Cursor.ID}
		/windowstate InventoryWindow open
		/delay 1s
		/notify InventoryWindow InvSlot13 leftmouseup
		/delay 3s ${Me.Inventory[mainhand].Name.Find[Brell's Fishin' Pole]}
		/if (${Cursor.ID}) /autoinventory
		/delay 2s !${Cursor.ID}
		/windowstate InventoryWindow close
		/delay 2s !${Cursor.ID}
		/return
	}
	
	/if (${FindItemCount[fishing pole]}) {
		/windowstate InventoryWindow open
		/keypress OPEN_INV_BAGS
		/delay 1s
		/itemnotify "${FindItem[fishing pole]}" leftmouseup
		/delay 2s ${Cursor.ID}
		/notify InventoryWindow InvSlot13 leftmouseup
		/delay 3s ${Me.Inventory[mainhand].Name.Find[Fishing Pole]}
		/if (${Cursor.ID}) /autoinventory
		/delay 2s !${Cursor.ID}
		/windowstate InventoryWindow close
		/keypress CLOSE_INV_BAGS
		/return
	}
	/echo  You can't fish without a fishing pole in your primary hand.
	/end
/return

| --------------------------------------------------------------------------------------------
| SUB: Event_NoBait
| --------------------------------------------------------------------------------------------
Sub Event_NoBait

	/declare count int local

	/if (${FindItem[=Anizok's Bait Dispenser].ItemSlot}!=32 && ${FindItem[=Anizok's Bait Dispenser].ID}) {
		/echo You must put your Anizok's Bait Dispenser in the bottom right inventory slot (#10) to make use of it.
		/end
	}
	/if (${FindItem[=Anizok's Bait Dispenser].ItemSlot}==32 && ${FindItemCount[=${baitfish}]}) {
		/if (${InvSlot[Pack10].Item.Items}!=0) {
			/echo You must empty your Anizok's Bait Dispenser and restart the macro.
			/end
		}
		/keypress OPEN_INV_BAGS
		/for count 1 to ${FindItemCount[=${baitfish}]}
		/ctrlkey /itemnotify "${baitfish}" leftmouseup
		/delay 2s ${Cursor.ID}
		/nomodkey /itemnotify in pack10 1 leftmouseup
		/delay 2s !${Cursor.ID}
		/combine pack10
		/delay 5s
		/autoinventory
		/delay 2s !${Cursor.ID}
		/if (${FindItemCount[bait]}<${maxbait}) /next count
		/keypress CLOSE_INV_BAGS
	}
	/if (${FindItemCount[bait]}) /return
	/echo You must buy more bait!
	/end
/return

| --------------------------------------------------------------------------------------------
| SUB: Event_clearcursor
| --------------------------------------------------------------------------------------------
Sub Event_clearcursor
	/if (${Cursor.ID}) /autoinventory
	/delay 2s !${Cursor.ID}
/return

| --------------------------------------------------------------------------------------------
| SUB: Event_MilkandCookie
| --------------------------------------------------------------------------------------------
Sub Event_MilkandCookie(S0,S1)

	/if (${FindItem[=Spiced Iced Tea Dispenser].ID} && ${FindItemCount[=Spiced Iced Tea]}<3) {
		/casting 107808 item -invis
		/delay 2s ${Cursor.ID}
		/delay 5
		/autoinventory
		/delay 2s !${Cursor.ID}
		/if (${Cursor.ID}) /autoinventory
	}
	/if (${FindItem[=Warm Milk Dispenser].ID} && ${FindItemCount[=Warm Milk]}<3) {
		/casting 52191 item -invis
		/delay 2s ${Cursor.ID}
		/delay 5
		/autoinventory
		/delay 2s !${Cursor.ID}
		/if (${Cursor.ID}) /autoinventory
	}
	/if (${FindItem[=Fresh Cookie Dispenser].ID} && ${FindItemCount[=Fresh Cookie]}<3) {
		/casting 71979 item -invis
		/delay 2s ${Cursor.ID}
		/delay 5
		/autoinventory
		/delay 2s !${Cursor.ID}
		/if (${Cursor.ID}) /autoinventory
	}
	/if (${Cursor.ID}) /autoinventory
	/if (!${FindItem[=Spiced Iced Tea Dispenser].ID} && !${FindItem[=Warm Milk Dispenser].ID} && !${FindItem[=Fresh Cookie Dispenser].ID} && ${Me.Grouped} && !${FeedSpam}) {
		/gsay I'm out of ${S1}, anyone have any to spare
		/varset FeedSpam 10s
	}
/return

| --------------------------------------------------------------------------------------------
| SUB: Event_camp
| --------------------------------------------------------------------------------------------
Sub Event_camp
/end 
	
/return
 
fishing

Users who are viewing this thread

Back
Top
Cart