- Joined
- Dec 14, 2006
- RedCents
- 692¢
Max out Begging, Forage, Tracking, all Spell skills, Bard skills, fishing, hiding, and sneaking in one macro.
Fishing.mac has been renamed to skilling.mac with a whole bunch of refinements and improvements. It has been tested in all of the zones in the ini file and on all classes of characters. Run /mac skilling the first time on a character and an ini file will be generated. Adjust the settings in the ini file to skill what you want. Fishing with pole replacement and bait purchase is included.
Fishing.mac has been renamed to skilling.mac with a whole bunch of refinements and improvements. It has been tested in all of the zones in the ini file and on all classes of characters. Run /mac skilling the first time on a character and an ini file will be generated. Adjust the settings in the ini file to skill what you want. Fishing with pole replacement and bait purchase is included.
Rich (BB code):
| - skilling.mac
| - Takes your skills to the maximum.
| - Version 1.8
| - Date: 8/15/2011
| -
| - By DragonFire
| - Originally known as Fishing.mac
| - Credits
| - Thanks to Maskoi for several refinements.
| - Forage based upon yafm.mac
| - Buying routine based upon alctol.mac
| - Casting skill up based upon castingskillup.mac
| - Fishing inspired by fishy.mac by ArmySoldier /salute.
| -
| - _______________________________________________________
| - Requirements
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|**
First level pet spells for pet classes with a supply of required
reagents.
The spells listed in the ini file for the class are the most
efficient ones for saving mana and doing the skills. You have
to have the spells available in the spell book that you want
to use for skilling up.
For the language to change based upon the recipient's needs,
the recipient must be running skillinglang.mac or a group
message of "Change language" must be sent.
The language routine REQUIRES a social with the name Skillang
with five lines of short text.
This works:
/g Spam 1
/g Spam 2
/g Spam 3
/g Spam 4
/g Spam 5
**|
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - Version History
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|** Version History
1.8 Added a persistent hide feature especially for rangers
that want to hide while foraging.
1.7 Fixed a couple of conflicts in meditation and begging.
1.6 Initialization file created.
Added pet targeting for evocation to Shadow Knights and
pet targeting for alteration to necromancers.
Added specialization selection.
Secondary Forte added for spell skill ups.
Added level needed to cast the complete group of spells.
Added preestablished zone information.
Moved spells list to the ini file.
Added automatic creation of ini file.
Added Bard practice.
Added sample locations to the ini file.
Changed the name of the file to skilling.mac to better
represent what it does.
Added supplemental macro for language target to notify that
100 has been achieved in a language.
Added events for language changes triggered by a group member
both manually an automatically as they skill up.
Created a partner macro to sense and send language change
instructions.
Added Sense Traps
Added persistant foraging.
1.5 If the BegTarget is not present, begging and picking will
not spam anymore. Heading code has been reduced.
The command to open the entire inventory is now used
instead of opening each bag one at a time. Mesmerize is
used instead of Pendril's Animation to save material components.
Thanks Maskoi!
1.4 Added persistent fishing. Cleaned up output and formatting.
Added magician pet targeting.
1.3 Working version distributed. Added ability to move to beg
target and merchant.
1.2 Internal version with several testing areas like pick pockets.
1.1 Original version with skill cap issues. Pulled. **|
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - General Blather about the Macro
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|** Since it seems silly to stand in one place and practice
only one skill, Fishing, Begging, Tracking, Forage, Sneak,
Hide, Feign Death, Mend, Meditation, Pick Pocket, Spells,
Songs and Languages can be practiced if available to the
character. The macro will automatically check for available
skills. Any can be turned off in the ini file.
The original intent of the macro was to work on fishing and
begging which require interaction with NPC's to complete.
Other skills were added along the way.
Be careful of who you choose as your beg target as they
can get feisty. If the begging target is not attacked,
they usually hit a couple of times and then stop. Having
a NPC that will tolerate begging close to the fishing
merchant and in an unobstructed line is a requirement
of the macro if you are working on begging.
Pick pocket works well but it usually really ticks off the NPC
when it works. High level players will probably not get
enough damage to matter and can keep on taking the damage
while skilling up. Your begging target will be pick pocketed.
If the pick pocket target is not attacked, they usually hit a couple
of times and then stop.
Use a merchant next to water or stock up and restock manually
as needed. Make sure he has a Fishing Pole and Fishing Bait
in inventory. If the merchant does not have the required
fishing pole or bait, fishing will be turned off and need to
be turned on in the ini file when restocked.
You can turn off fishing, begging, and pick pocket if you just
want to work on skills not requiring NPC's. You can also turn
off all skills but fishing if you just want to fish.
If you are fishing, face the water and be close enough to the
water when you start unless you are trying to catch a landshark.
The fishing supply merchant and the begging target should be in
line of sight of the starting position. If there are major obstacle
or corners, the character will probably get stuck.
At Butcherblock docks for example, you would set Balen as your
BegTarget and Parn as your Merchant. Move into the water until
you can fish close to the north wall and in line of sight of the
two NPC's and type /mac fishing . The LOC is provided in the ini
file. Sit back and watch it skill up. There are several locations
provided in the ini file.
The speed of skill up will not change. An 85 enchanter going
from 0 to max in all skills may take 3 days or so.
You cannot skill up in a skill you do not have available.
You cannot cast a spell you do not have in your spell book.
**|
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - Initialization File Information
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|** The Initialization File - skilling.ini
| -
[Default] - Default settings to be used to create missing information.
MaxSave
The default maximum number of items to save in the [KeepList]
section.
PersistFish
To fish continuously regardless of skill level set
PersistFish to 1 otherwise 0. To fish for quantity,
change the skilling.ini entries for the desired items.
LangPract
LangPract settings are 0, 1, or 2.
Set LangPract to 0 to remain silent, 1 to spam the group in a
keyboard controllable language and 2 to automatically cycle
through all languages. In option 1, just type the command
line /lang # (for example /lang 2 for barbarian) to change
the language at any time. Language changes from the keyboard
may require several attempts depending on when in the macro
the attempt to change is made.
NumbLangs
The default of 27 covers the 25 known tongues and the 2 unknown
tongues that are available while skipping Common. There is
a rumor of a third unknown tongue available. To change
the number of languages, change NumLangs in the ini file to the
number of languages the character knows.
PersistLang
If it is desired to keep Languages spamming even after all
skills are maxxed, make PersistLang 1 otherwise 0.
Skills Practiced
Declare which skills will be practiced. Default is 1
and attainment of the skill cap will be used to determine if
practice is done. Change it to 0 to turn off the skill manually.
If a specific specialized casting skill up is required, set all
the other spell types to 0 until the desired spell type is over
the skill cap of the others in specialization. Then turn the
other spell types on. If Secondary Forte AA has been purchased,
Max out the primary specialization or have it at least 51 points
greater than the other SkillCaps to be sure it does not exceed
the primary specialization. It may already be programmed to do
this in the EQ programming but it was not tested for this macro.
(There may be new levels for this if you
have AA's that cover specialization.)
Bard skills progression is much slower than caster spills progression.
DoWarp
If the use of warping to and from the merchant, begging target,
or starting location is permitted, set this variable to 1. The
default is 0 for off. It will usually wait until movement is restricted
to warp.
DoSpec
Set this to 0 if you want to manually control specialization.
Set DoSpec to 1 if you want the macro to train the specialization
and SecondaryForte based upon ini preferences.
Specialization
The specialization is the type of spell that will be trained
for a specialization skill level higher than the other types.
Do not change the class section specialization selection.
Instead, change the individual character specializations.
Secondary Forte
The secondary forte is an AA skill that allows a second
specialization for an additional 50 points. When it is
available, spell practice will commence on that skill until
the secondary forte is above 50.
[KeepList] - The maximum number of each foraged or fished item to keep
is listed here. These can be modified. The default is set in the
skilling.ini Set the number to 0 to discard trash.
[Character Name] - Each character using skilling.mac has a section
with the initialization settings for that character. The first
time use by a new character will generate the section. The macro
will end so that changes can be made. Then restart the macro.
See the [Default] section for a list of each of the variables.
[Zone Name] - Each zone with a known working combination of merchant
and begging targets is listed with the names of those NPC's, the
starting location to stand, the heading to face
(${Me.Heading.DegreesCCW}) as well as notes about the location.
[Class Name] - The spells that each class uses for skilling is listed
and can be changed. The ID is the class ID number. Specialization
is determined by the highest level spells needed in battle that do
the most damage. Do not change the Class specialization but change
the character specialization if desired.
**|
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - Main Macro Below
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| -
|+++Indicates a line, usually an /echo that was used for debugging.
| - The |+++ can be removed to see the output.
| -
| - Inclusions
#include spell_routines.inc
| -
| - Events
#Event Broke "#*#afford to buy#*#"
#Event Holding "#*#can't fish while holding#*#"
#Event Zoned "LOADING, PLEASE WAIT..."
#Event Language_In_Use "#*#Language is #1#. (#2#)"
#Event NotALanguage "#*#language help#*#"
#Event ChangeLang "#*#hange language#*#"
#Event MaxLang "#*#You have become better at an #3# tongue! (100)#*#"
#Event OutofRoom "#*#no open slots for the held item#*#"
#Event InventoryFull "#*#inventory appears full#*#"
| -
Sub Main
/echo Starting to increase the skills of ${Me.Name}!
| -
| - _______________________________________________________
| - Check Ini File
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
/declare IniChanged int outer 0
/if (!${Bool[${Ini[skilling.ini]}]}) {
/call MakeIni
/goto :IniCreated
}
/if (!${Bool[${Ini[skilling.ini,${Me.Name}]}]}) /call AddChar
/if (!${Bool[${Ini[skilling.ini,${Zone.Name}]}]}) /call AddZone
/if (${IniChanged} == 1) {
/echo Either ${Zone.Name} or ${Me.Name} has been
/echo added to the ini file.
/echo The macro is ending so that so the file can be
/echo adjusted for individual needs.
/echo Restart the macro after adjusting the file.
/endmacro
}
:IniCreated
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - Variable Declarations
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - _______________________________________________________
| - Variables that can be changed in skilling.ini
| - _______________________________________________________
| - Declare Misc Variables
/declare MerchantName string outer ${Ini[skilling.ini,${Zone.Name},MerchantName]}
/declare BegTarget string outer ${Ini[skilling.ini,${Zone.Name},BegTarget]}
/declare PersistFish int outer ${Ini[skilling.ini,${Me.Name},PersistFish]}
/declare PersistForage int outer ${Ini[skilling.ini,${Me.Name},PersistForage]}
/declare LangPract int outer ${Ini[skilling.ini,${Me.Name},LangPract]}
/declare NumLangs int outer ${Ini[skilling.ini,${Me.Name},NumbLangs]}
/declare PersistLang int outer ${Ini[skilling.ini,${Me.Name},PersistLang]}
/declare MaxSave int outer ${Ini[skilling.ini,${Me.Name},MaxSave]}
/declare DoFish int outer ${Ini[skilling.ini,${Me.Name},DoFish]}
/declare DoBeg int outer ${Ini[skilling.ini,${Me.Name},DoBeg]}
/declare DoTrack int outer ${Ini[skilling.ini,${Me.Name},DoTrack]}
/declare DoForage int outer ${Ini[skilling.ini,${Me.Name},DoForage]}
/declare DoSneak int outer ${Ini[skilling.ini,${Me.Name},DoSneak]}
/declare DoHide int outer ${Ini[skilling.ini,${Me.Name},DoHide]}
/declare PersistHide int outer ${Ini[skilling.ini,${Me.Name},PersistHide]}
/declare DoFeign int outer ${Ini[skilling.ini,${Me.Name},DoFeign]}
/declare DoMend int outer ${Ini[skilling.ini,${Me.Name},DoMend]}
/declare DoMed int outer ${Ini[skilling.ini,${Me.Name},DoMed]}
/declare DoPick int outer ${Ini[skilling.ini,${Me.Name},DoPick]}
/declare DoSenseTraps int outer ${Ini[skilling.ini,${Me.Name},DoSenseTraps]}
/declare DoAbj int outer ${Ini[skilling.ini,${Me.Name},DoAbj]}
/declare DoAlt int outer ${Ini[skilling.ini,${Me.Name},DoAlt]}
/declare DoCon int outer ${Ini[skilling.ini,${Me.Name},DoCon]}
/declare DoDiv int outer ${Ini[skilling.ini,${Me.Name},DoDiv]}
/declare DoEvo int outer ${Ini[skilling.ini,${Me.Name},DoEvo]}
/declare DoBard int outer ${Ini[skilling.ini,${Me.Name},DoBard]}
/declare DoWarp int outer ${Ini[skilling.ini,${Me.Name},DoWarp]}
/declare DoSpec int outer ${Ini[skilling.ini,${Me.Name},DoSpec]}
| -_______________________________________________________
| - Variables that should NOT be changed.
| - _______________________________________________________
| - Various calculation variables
/declare j int outer 1
/declare k int outer 1
/declare m int outer
/declare n int outer
/declare LocY int outer
/declare LocX int outer
/declare LocZ int outer
/declare AmIDone int outer 1
/declare ItemToBuy string outer
/declare Quantity int outer
/declare CurrentSub string outer
/declare SpamLang int outer
/declare LangName string outer
/declare LangNum int outer 23
/declare LangText string outer
/declare LangHold int outer 2
/declare PetName string outer
/declare MelodyList string outer
/declare ChangeLang int outer 0
/declare CheckType string outer
/declare SpecType string outer
/declare SecType string outer
/declare TestPet string outer
/declare InvFull int outer 0
| -
| - Declare Spell Variables
|+++/echo Declare Spell Variables
/if (${Me.Class.ID} == 8) /goto :SkipForBard
/declare Specialization string outer ${Ini[skilling.ini,${Me.Name},Specialization]}
/declare SecondaryForte string outer ${Ini[skilling.ini,${Me.Name},SecondaryForte]}
/declare AbjPracSpell string outer ${Ini[skilling.ini,${Me.Name},Abjuration]}
/declare AltPracSpell string outer ${Ini[skilling.ini,${Me.Name},Alteration]}
/declare ConPracSpell string outer ${Ini[skilling.ini,${Me.Name},Conjuration]}
/declare DivPracSpell string outer ${Ini[skilling.ini,${Me.Name},Divination]}
/declare EvoPracSpell string outer ${Ini[skilling.ini,${Me.Name},Evocation]}
:SkipForBard
| -
| - Warp to Starting Point
|** If DoWarp is equal to 1, the character will be warped to
the starting position in the zone and face the correct heading.**|
| -
/if (${DoWarp} == 1) {
/varset LocY ${Ini[skilling.ini,${Zone.Name},StartY]}
/varset LocX ${Ini[skilling.ini,${Zone.Name},StartX]}
/varset LocZ ${Ini[skilling.ini,${Zone.Name},StartZ]}
/warp loc ${LocY} ${LocX} ${LocZ}
/face heading ${Ini[skilling.ini,${Zone.Name},Heading]}
} else {
/echo The macro was started at the spot the character was standing.
/echo The ini file was changed to make this the starting point.
/echo If this is not the right spot, check the macro for the
/echo location to start in ${Zone.Name} or delete the ini file
/echo so that a new one will be created and move to the spot
/echo listed in the ini file.
/echo Warping is turned off and was not used.
}
| - Set the starting location and direction to face when fishing.
/declare StartX int outer ${Me.X}
/declare StartY int outer ${Me.Y}
/declare StartZ int outer ${Me.Z}
/declare MoveToY int outer
/declare MoveToX int outer
/declare RandMove int outer
/declare RandFace int outer
/declare Facing int outer ${Me.Heading.DegreesCCW}
/declare Dir string outer
/varset Dir ${Me.Heading}
|+++/echo Facing ${Facing} ${Dir}
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - MainLoop
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
:MainLoop
| GM Check
/call GMCheck
/doevents flush
| - Start Skill Up Routines
/call PetCheck
/call Fish
/call Beg
/if (${Me.SkillCap[Tracking]} > 0) /call Track
/if (${Me.SkillCap[Forage]} > 0) /call Forage
/if (${Me.SkillCap[Sneak]} > 0) /call Sneak
/if (${Me.SkillCap[Hide]} > 0) /call Hide
/if (${Me.SkillCap[Feign Death]} > 0) /call Feign
/if (${Me.SkillCap[Mend]} > 0) /call Mend
/if (${Me.SkillCap[Pick Pockets]} > 0) /call Pick
/if (${Me.SkillCap[Sense Traps]} > 0) /call SenseTraps
/if (${Me.SkillCap[Meditate]} > 0) /call Med
/if (${DoSpec} == 1 && ${Me.SkillCap["Specialize Abjure"]} > 0) {
/call Specialization
} else {
/if (${Me.SkillCap[Abjuration]} > 0) /call Abjuration
/if (${Me.SkillCap[Alteration]} > 0) /call Alteration
/if (${Me.SkillCap[Conjuration]} > 0) /call Conjuration
/if (${Me.SkillCap[Divination]} > 0) /call Divination
/if (${Me.SkillCap[Evocation]} > 0) /call Evocation
/if (${Me.Class.Name.Equal[Bard]}) /call Bard
}
/if (${LangPract} == 1 || ${LangPract} == 2) /call Languages
| -
| - Check to see if all is done.
|** The AmIDone variable starts as 1. If any skill is not at max,
it gets changed to 0. It will run through a final time and when
it has no skills to update, it will remain at 1 and exit.
If the PersistLang variable is set to 1 then AmIDone remains
at 0 and the language group spam continues. If the PersistFish
or the PersistForage variables are set to 1 the macro will
continue for those.**|
/if (${AmIDone}==1) {
/Echo I am all done and maxxed out.
/endmac
}
/varset AmIDone 1
| -
/goto :MainLoop
/endmac
| -
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - Subroutines Below
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: PetCheck
Sub PetCheck
|+++/echo Pet Check
/if (${Bool[${Me.Pet}]}) /return
/if (${Me.Class.ID} == 5) /call Cast "Leering Corpse" gem3
/if (${Me.Class.ID} == 13) /call Cast "Elementalkin: Water" gem3
/if (${Me.Class.ID} == 11) /call Cast "Cavorting Bones" gem3
/delay 5
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Fishing
Sub Fish
|+++/echo Fishing Check
/if (${DoFish}!=1) /return
/varset CurrentSub Fish
/if ((${Me.Skill[Fishing]} == ${Me.SkillCap[Fishing]}) && (${PersistFish} != 1)) /return
/varset AmIDone 0
/echo Fishing
/if (!${Me.Standing}) /stand
/call CheckPole
/call CheckBait
/delay 5
/if (${DoFish}!=1) /return
/varset RandMove ${Math.Rand[3]}
/varcalc MoveToX ${StartX}+${RandMove}
/varcalc MoveToY ${StartY}+${RandMove}
/call MoveToStart
/delay 1s
/face heading ${Facing}
/doability Fishing
/doevents
/delay 2s
|** Might as well do some other stuff while waiting for the
fish to land. If too far from the NPC's, will not move to beg
or pick pocket.**|
/if (${Spawn[${BegTarget}].ID}) {
/target ${BegTarget}
/if (${Target.Distance} < 10) /call Beg
/if (${Target.Distance} < 10) /call Pick
}
/if (${Me.SkillCap[Tracking]} > 0) /call Track
/if (${Me.SkillCap[Sneak]} > 0) /call Sneak
/if (${Me.SkillCap[Hide]} > 0) /call Hide
/if (${Me.SkillCap[Mend]} > 0) /call Mend
/delay 13s
/if (${Cursor.ID}) /call HandleItem
/doevents
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Beg
Sub Beg
|+++/echo Begging Check.
/if (${DoBeg}!=1) /return
/varset CurrentSub Beg
/if (${Me.Skill[Begging]} == ${Me.SkillCap[Begging]}) /return
/varset AmIDone 0
/echo Begging.
/target ${BegTarget}
/if (${Target.Distance} > 8) {
/varset RandMove ${Math.Rand[3]}
/varcalc MoveToX ${Target.X}+${RandMove}
/varcalc MoveToY ${Target.Y}+${RandMove}
/call MoveToLoc
}
/delay 2
|** Detects if an invisibility spell or hide is present. It will
turn off hide but it will not turn off or debuff a spell.**|
/if (${Me.Invis}) {
/doability hide
/delay 10
}
/doability begging
/delay 5
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Pick
Sub Pick
|+++/echo Pick Pockets Check.
/if (${DoPick}!=1) /return
/varset CurrentSub Pick
/if (${Me.Skill[Pick Pockets]} == ${Me.SkillCap[Pick Pockets]}) /return
/varset AmIDone 0
/echo Picking a Pocket.
/target ${BegTarget}
/if (${Target.Distance} > 8) {
/varset RandMove ${Math.Rand[3]}
/varcalc MoveToX ${Target.X}+${RandMove}
/varcalc MoveToY ${Target.Y}+${RandMove}
/call MoveToLoc
/face fast
}
/delay 2
/doability "Pick Pockets"
/delay 5
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: SenseTraps
Sub SenseTraps
|+++/echo Sensing traps
/if (${DoSenseTraps}!=1) /return
/varset CurrentSub SenseTraps
/if (${Me.Skill[Sense Traps]} == ${Me.SkillCap[Sense Traps]}) /return
/varset AmIDone 0
/echo Sensing Traps
/doability "Sense Traps"
/delay 2
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Track
Sub Track
|+++/echo Tracking check
/if (${DoTrack}!=1) /return
/varset CurrentSub Track
/if (${Me.Skill[Tracking]} == ${Me.SkillCap[Tracking]}) /return
/varset AmIDone 0
/echo Tracking
/doability tracking
/delay 2
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Forage
Sub Forage
|+++/echo Forage Check
/if (${DoForage}!=1) /return
/varset CurrentSub Forage
/if (${Me.Skill[Forage]} == ${Me.SkillCap[Forage]} && (${PersistForage} != 1)) /return
/varset AmIDone 0
/echo Foraging
|** If something is on the cursor, get rid of it.
Take care of all items on the cursor. Be careful,
this action may destroy good stuff. Check your cursor
before starting the macro.**|
:ClearCursor1
/if (${Cursor.ID}) {
/call HandleItem
/goto :ClearCursor1
}
/if (!${Me.Standing}) {
| - Stand up. Can't forage while sitting.
/stand
}
/doability forage
/delay 2
:ClearCursor2
/if (${Cursor.ID}) {
/call HandleItem
/goto :ClearCursor2
}
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Sneak
Sub Sneak
|+++/echo Sneak Check
/if (${DoSneak}!=1) /return
/varset CurrentSub Sneak
/if (${Me.Skill[Sneak]} == ${Me.SkillCap[Sneak]}) /return
/varset AmIDone 0
/echo Sneaking
/doability sneak
/delay 2
|***Turns off sneak and just in case an extra sneak was
attempted from the keyboard it turns it off.**|
/doability sneak
/delay 2
/if (${Me.Sneaking}) {
/doability sneak
/delay 2
}
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Hide
Sub Hide
|+++/echo Hide Check
/if (${DoHide}!=1) /return
/varset CurrentSub Hide
/if ((${Me.Skill[Hide]} == ${Me.SkillCap[Hide]}) && (${PersistHide} == 0)) /return
/varset AmIDone 0
/echo Hiding
/doability hide
/delay 2
|** Turns off hide.**|
/doability hide
/delay 2
|** Detects if an invisibility spell or hide is present. It will
turn off hide but it will not turn off or debuff a spell.**|
/if (${Me.Invis}) {
/doability hide
/delay 10
}
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Feign Death
Sub Feign
|+++/echo Feign Check
/if (${DoFeign}!=1) /return
/varset CurrentSub Feign
/if (${Me.Skill[Feign Death]} == ${Me.SkillCap[Feign Death]}) /return
/varset AmIDone 0
/echo Feigning
/doability "feign death"
/delay 2
/stand
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Mend
Sub Mend
|+++/echo Mend Check
/if (${DoMend}!=1) /return
/varset CurrentSub Mend
/if (${Me.Skill[Mend]} == ${Me.SkillCap[Mend]}) /return
/varset AmIDone 0
/echo Mending
/doability mend
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Meditation
Sub Med
|+++/echo Meditation Check
/if (${DoMed}!=1) /return
/varset CurrentSub Med
/if (${Me.Skill[Meditate]} == ${Me.SkillCap[Meditate]}) /return
/echo Meditating
/delay 2s
/book
| - Might as well get some other stuff done while waiting.
/target ${BegTarget}
/delay 2
/for m 1 to 10
/call Beg
/if (${Me.SkillCap[Tracking]} > 0) /call Track
/if (${Me.SkillCap[Sneak]} > 0) /call Sneak
/if (${Me.SkillCap[Hide]} > 0) /call Hide
/if (${Me.SkillCap[Mend]} > 0) /call Mend
/if (${Me.SkillCap[Sense Traps]} > 0) /call SenseTraps
/if (${LangPract} > 0) /call Languages
/delay 15s
/next m
/book
/varset AmIDone 0
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Abjuration
Sub Abjuration
|+++/echo Abjuration Check
/if (${DoAbj}!=1) /return
/varset CurrentSub Abj
/if ((${Me.Skill[Abjuration]} == ${Me.SkillCap[Abjuration]}) && (${Me.Skill["Specialize Abjure"]} == ${Me.SkillCap["Specialize Abjure"]})) /return
/varset AmIDone 0
/echo Casting Abjuration for a ${Me.Class.Name}, class number ${Me.Class.ID} using ${AbjPracSpell}.
/target ${Me}
/delay 15
/call Cast "${AbjPracSpell}" gem4
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Alteration
Sub Alteration
|+++/echo Alteration Check
/if (${DoAlt}!=1) /return
/varset CurrentSub Alt
/if ((${Me.Skill[Alteration]} == ${Me.SkillCap[Alteration]}) && (${Me.Skill["Specialize Alteration"]} == ${Me.SkillCap["Specialize Alteration"]})) /return
/varset AmIDone 0
/echo Casting Alteration for a ${Me.Class.Name}, class number ${Me.Class.ID} using ${AltPracSpell}.
/target ${Me}
| - Adjusting the target for a magician.
/if (${Me.Class.ID} == 13) /target ${Me.Pet}
| - Adjusting the target for a necromancer.
/if (${Me.Class.ID} == 11) /target ${Me.Pet}
| - Adjusting the target for a shadow knight
/if (${Me.Class.ID} == 5) /target ${Me.Pet}
/delay 25
/call Cast "${AltPracSpell}" gem5
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Conjuration
Sub Conjuration
|+++/echo Conjuration Check
/if (${DoCon}!=1) /return
/varset CurrentSub Con
/if ((${Me.Skill[Conjuration]} == ${Me.SkillCap[Conjuration]}) && (${Me.Skill["Specialize Conjuration"]} == ${Me.SkillCap["Specialize Conjuration"]})) /return
/varset AmIDone 0
/echo Casting Conjuration for a ${Me.Class.Name}, class number ${Me.Class.ID} using ${ConPracSpell}.
/if (${Cursor.ID}) /call HandleItem
/target ${Me}
/delay 5
/call Cast "${ConPracSpell}" gem6
/delay 5
/destroy
/target ${Me.Pet}
/delay 25
/if (${Me.Class.ID} == 14) /pet leave
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Divination
Sub Divination
|+++/echo Divination Check
/if (${DoDiv}!=1) /return
/varset CurrentSub Div
/if ((${Me.Skill[Divination]} == ${Me.SkillCap[Divination]}) && (${Me.Skill["Specialize Divination"]} == ${Me.SkillCap["Specialize Divination"]})) /return
/varset AmIDone 0
/echo Casting Divination for a ${Me.Class.Name}, class number ${Me.Class.ID} using ${DivPracSpell}.
/target ${Me}
/delay 25
/call Cast "${DivPracSpell}" gem7
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Evocation
Sub Evocation
|+++/echo Evocation Check
/if (${DoEvo}!=1) /return
/varset CurrentSub Evo
/if ((${Me.Skill[Evocation]} == ${Me.SkillCap[Evocation]}) && (${Me.Skill["Specialize Evocation"]} == ${Me.SkillCap["Specialize Evocation"]})) /return
/varset AmIDone 0
/echo Casting Evocation for a ${Me.Class.Name}, class number ${Me.Class.ID} using ${EvoPracSpell}.
/target ${Me}
| - Adjusting the target for a shadow knight
/if (${Me.Class.ID} == 5) /target ${Me.Pet}
| - Adjusting the target for a necromancer
/if (${Me.Class.ID} == 11) /target ${Me.Pet}
/delay 25
/call Cast "${EvoPracSpell}" gem8
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Specialization
Sub Specialization
|+++/echo Specialization Routine
/varset CurrentSub Specialization
| -
|** Since it is Specialize Abjure instead of Specialize Abjuration
the variable has to be played with. **|
/varset SpecType Specialize ${Specialization}
/if (${SpecType.Find[Abjuration]}) /varset SpecType Specialize Abjure
/varset SecType Specialize ${SecondaryForte}
/if (${SecType.Find[Abjuration]}) /varset SecType Specialize Abjure
|** Create a variable with a spell type that is not the specialization
or the secondary forte to use to check the skillcap level of
the specialization and secondary.**|
/declare TempCheck string local ${Specialization} ${SecondaryForte}
/if (!${TempCheck.Find[Abjuration]}) {
/varset CheckType Specialize Abjure
} else /if (!${TempCheck.Find[Alteration]} {
/varset CheckType Specialize Alteration
} else /if (!${TempCheck.Find[Conjuration]} {
/varset CheckType Specialize Conjuration
}
|+++/echo Spec-${SpecType} Sec-${SecType} Check-${CheckType}
| -
| - Decide to cast for specialization
/if (${Me.SkillCap[${SpecType}]} == ${Me.SkillCap[${CheckType}]}) {
/call ${Specialization}
} else /if (${Me.Skill[${SpecType}]} < ${Me.SkillCap[${SpecType}]}) {
/call ${Specialization}
} else /if (${Me.AltAbility[Secondary Forte]} > 0 && ${Me.Skill[${SecType}]} < ${Me.SkillCap[${SecType}]}) {
/call ${SecondaryForte}
} else {
/call Abjuration
/call Alteration
/call Conjuration
/call Divination
/call Evocation
}
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Bard
Sub Bard
|+++/echo Bard Routine
/if (${DoBard}!=1) /return
/varset CurrentSub Bard
| - Clear current melody.
/melody
/delay 4s
/varset MelodyList
| - Memorize songs
/if (${Me.Gem[${Ini[skilling.ini,${Me.Name},Brass Instruments]}]} != 4) {
/memspell 4 "${Ini[skilling.ini,${Me.Name},Brass Instruments]}"
/delay 4s
}
/if (${Me.Gem[${Ini[skilling.ini,${Me.Name},Percussion Instruments]}]} != 5) {
/memspell 5 "${Ini[skilling.ini,${Me.Name},Percussion Instruments]}"
/delay 4s
}
/if (${Me.Gem[${Ini[skilling.ini,${Me.Name},Sing]}]} != 6) {
/memspell 6 "${Ini[skilling.ini,${Me.Name},Sing]}"
/delay 4s
}
/if (${Me.Gem[${Ini[skilling.ini,${Me.Name},Stringed Instruments]}]} != 7) {
/memspell 7 "${Ini[skilling.ini,${Me.Name},Stringed Instruments]}"
/delay 4s
}
/if (${Me.Gem[${Ini[skilling.ini,${Me.Name},Wind Instruments]}]} != 8) {
/memspell 8 "${Ini[skilling.ini,${Me.Name},Wind Instruments]}"
/delay 4s
}
| - Add needed skills to melody list.
/if (${Me.Skill[Brass Instruments]} < ${Me.SkillCap[Brass Instruments]}) /varset MelodyList ${MelodyList} 4
/if (${Me.Skill[Percussion Instruments]} < ${Me.SkillCap[Percussion Instruments]}) /varset MelodyList ${MelodyList} 5
/if (${Me.Skill[Sing]} < ${Me.SkillCap[Sing]}) /varset MelodyList ${MelodyList} 6
/if (${Me.Skill[Stringed Instruments]} < ${Me.SkillCap[Stringed Instruments]}) /varset MelodyList ${MelodyList} 7
/if (${Me.Skill[Wind Instruments]} < ${Me.SkillCap[Wind Instruments]}) /varset MelodyList ${MelodyList} 8
| - Make noise
|+++/echo I want to play ${MelodyList}
/melody ${MelodyList}
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Languages
Sub Languages
|+++/echo Language practice started.
| -
/varset CurrentSub Languages
/varset ChangeLang 0
/varset SpamLang ${LangHold}
/delay 10
/for j 1 to ${Math.Calc[${Math.Rand[25]}+10]}
|++ /echo SpamLang ${SpamLang}
/lang ${SpamLang}
|** You MUST have a social by the name of Skillang (case
sensitive). /g commands do not work for an unknown reason. They pick up the original language only and are
inconsistent. The social should be five short lines
starting with /g. **|
/dosocial Skillang
/delay ${Math.Calc[${Math.Rand[5]}+5]}
/doevents
/delay 10
/next j
/varset SpamLang ${Math.Calc[${SpamLang}+1]}
/varset LangHold ${SpamLang}
/if (${PersistLang} == 1 && ${LangPract} > 0) /varset AmIDone 0
| - Set the language to Common after practice so the keyboard can be used to talk.
/lang 1
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Check Pole
Sub CheckPole
| - Add check for Brell's Fishing Pole and Fisherman's Companion
:CheckPoleLoop
/target ${Me}
/if (${Me.Inventory[mainhand].Name.Find[Fishing Pole]} == 1) /return
/if (${FindItemCount[=Fishing Pole]} == 0) {
/delay 5
/varset ItemToBuy Fishing Pole
/varset Quantity 1
/call Buy
}
/delay 2s
/if (${FindItemCount[=Fishing Pole]} > 0) {
/keypress OPEN_INV_BAGS
/delay 2s
/itemnotify ${FindItem[Fishing Pole].InvSlot} leftmouseup
/delay 5
/itemnotify mainhand leftmouseup
/delay 5
| - Anything in the primary hand (mainhand) will then be put in inventory.
/autoinventory
/delay 5
}
/keypress CLOSE_INV_BAGS
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Check Bait
Sub CheckBait
/varset ItemToBuy Fishing Bait
| - Set the amount of bait to have on hand.
/varset Quantity 40
/if (${FindItemCount[=Fishing Bait]} > 0) /return
/call Buy
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Buy (string ItemToBuy, int Quantity)
Sub Buy
| - Clear the cursor.
/call HandleItem
/if (${Me.Cash} < 1) {
/echo You have run out of money. Suspending fishing.
/varset DoFish 0
/return
}
/target ${MerchantName}
/if (${Target.Distance} > 8) {
/varset RandMove ${Math.Rand[3]}
/varcalc MoveToX ${Target.X}+${RandMove}
/varcalc MoveToY ${Target.Y}+${RandMove}
/call MoveToLoc
/face fast
}
/delay 2
/click right target
/delay 2
/declare i int local
/declare QTY int local
/declare ListItem int local
/varset QTY ${Math.Calc[${Quantity}-${FindItemCount[${ItemToBuy}]}]}
|+++ /echo Buying ${QTY} ${ItemToBuy}!
/delay 1s
| -
/if (${FindItemCount[${ItemToBuy}]}>= ${Quantity}) {
/echo Done!
/notify merchantwnd MW_done_Button leftmouseup
/delay 5
/return
}
/varset ListItem ${Window[MerchantWnd].Child[ItemList].List[=${ItemToBuy},2]}
/if (!${ListItem}) {
/echo Couldn't find ${ItemToBuy}.
/varset Do${CurrentSub} 0
/return
} else {
/notify MerchantWnd ItemList listselect ${ListItem}
/delay 1s
}
|+++ /echo Buying ${QTY} ${ItemToBuy} so I will have ${Quantity}.
:BuyLoop
| -
/doevents
/if (${InvFull} == 1) {
/varset InvFull 0
/goto :BuyComplete
}
/if (${QTY}>0) {
/if (${QTY}>19) {
/shiftkey /notify merchantwnd MW_buy_Button leftmouseup
/delay 3s
|+++ /echo There are ${FindItemCount[${ItemToBuy}]} ${ItemToBuy}s in inventory.
/varset QTY ${Math.Calc[${Quantity}-${FindItemCount[${ItemToBuy}]}]}
/delay 3
/doevents
/if (${QTY}<=0) {
/notify merchantwnd MW_done_Button leftmouseup
/goto :BuyComplete
/return
}
/goto :BuyLoop
}
/if (${QTY}>0 && ${QTY}<20) {
/for i 1 to ${QTY}
/delay 3
/ctrlkey /notify merchantwnd MW_buy_Button leftmouseup
|+++ /echo Buying ${ItemToBuy} ${i} of ${QTY}
/varcalc QTY ${Quantity}-${FindItemCount[${ItemToBuy}]}
|+++ /echo ${QTY}
/if (${QTY}<=0) {
/notify merchantwnd MW_done_Button leftmouseup
/goto :BuyComplete
/return
}
/next i
/notify merchantwnd MW_done_Button leftmouseup
/goto :BuyComplete
/return
}
}
:BuyComplete
/call MoveToStart
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| SUB: Move to LOC
Sub MoveToLoc(MoveToY, MoveToX)
/doevents
/declare running int local
/declare distanceNow float local
/declare distanceBefore float local
/declare distanceModifier int local
/declare distanceTimer timer 15
/varset running 0
/varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}
/varset distanceModifier 1
|+++/echo Moving to Location: ${MoveToY}, ${MoveToX}.
|+++/echo Distance: ${distanceBefore}
:moveToLocation
/doevents
/look
/face fast nolook loc ${MoveToY},${MoveToX}
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<10) {
/keypress forward
/return
}
/if (${distanceTimer}==0) {
/if (${Me.Sneaking}) {
/varset distanceModifier 2
} else {
/varset distanceModifier 1
}
/varset distanceNow ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}
/if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) {
/call HitObstacle
}
/varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}
/varset distanceTimer 15
}
/if (${running}==0) {
/keypress forward
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}>10) {
/varset running 1
/keypress forward hold
}
} else {
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<11) {
/varset running 0
/keypress forward
}
}
/goto :moveToLocation
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Obstacle Avoidance
Sub HitObstacle
/echo Obstacle hit, moving around it...
/keypress forward
/keypress back hold
/delay 10
/keypress back
/if (${Math.Rand[100]}+1>50) {
/keypress strafe_right hold
} else {
/keypress strafe_left hold
}
/delay 20
/keypress strafe_right
/keypress strafe_left
/keypress forward hold
/if (${DoWarp} == 1) /warp target
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Handle item on cursor.
Sub HandleItem
/declare MaxToKeep int local -1
:LootIt
| - Check for this item in skilling.ini
:CheckEntryExists
/varset MaxToKeep ${Ini[skilling.ini,KeepList,${Cursor.Name}]}
|+++/echo Max to Keep ${MaxToKeep} of ${Cursor.Name}
|+++/echo Is it in the Ini file? ${Ini[skilling.ini,KeepList].Find[${Cursor.Name}]}
/if ((${Ini[skilling.ini,KeepList].Find[${Cursor.Name}]}) < 1) {
/ini "skilling.ini" "KeepList" "${Cursor.Name}" "${MaxSave}"
/goto :CheckEntryExists
}
|+++ /echo I am supposed to keep only ${MaxToKeep} of ${Cursor.Name} and I have ${FindItemCount[=${Cursor.Name}]}.
/if (${FindItemCount[=${Cursor.Name}]} < ${MaxToKeep}) {
/autoinventory
/delay 5
/doevents
} else {
/destroy
}
/delay 5
| - To handle multiple items on the cursor.
/if (${Cursor.ID}) /goto :LootIt
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Move to starting position
Sub MoveToStart
|+++/echo Moving to starting position.
/if (${Math.Distance[${Me.Y},${Me.X}:${StartY},${StartX}]} > 8) {
/varset RandMove ${Math.Rand[3]}
/varcalc MoveToX ${Math.Calc[${StartX}+${RandMove}]}
/varcalc MoveToY ${Math.Calc[${StartY}+${RandMove}]}
|** In object avoidance, warping is to a target. Placing a warp
here prevents an error when moving to the start position.**|
/if (${DoWarp} == 1) /warp loc ${MoveToY} ${MoveToX} ${StartZ}
/call MoveToLoc
/varset RandFace ${Math.Rand[5]}
/face heading ${Math.Calc[${Facing}+${RandFace}]}
}
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Make Ini
Sub MakeIni
| -
| - Default Section
/ini "skilling.ini" "Default" "MerchantName" "NULL"
/ini "skilling.ini" "Default" "BegTarget" "NULL"
/ini "skilling.ini" "Default" "MaxSave" "20"
/ini "skilling.ini" "Default" "DoFish" "1"
/ini "skilling.ini" "Default" "PersistFish" "1"
/ini "skilling.ini" "Default" "LangPract" "1"
/ini "skilling.ini" "Default" "NumLangs" "27"
/ini "skilling.ini" "Default" "PersistLang" "1"
/ini "skilling.ini" "Default" "DoBeg" "1"
/ini "skilling.ini" "Default" "DoTrack" "1"
/ini "skilling.ini" "Default" "DoForage" "1"
/ini "skilling.ini" "Default" "PersistForage" "1"
/ini "skilling.ini" "Default" "DoSneak" "1"
/ini "skilling.ini" "Default" "DoHide" "1"
/ini "skilling.ini" "Default" "PersistHide" "1"
/ini "skilling.ini" "Default" "DoFeign" "1"
/ini "skilling.ini" "Default" "DoMend" "1"
/ini "skilling.ini" "Default" "DoMed" "1"
/ini "skilling.ini" "Default" "DoPick" "1"
/ini "skilling.ini" "Default" "DoSenseTraps" "1"
/ini "skilling.ini" "Default" "DoAbj" "1"
/ini "skilling.ini" "Default" "DoAlt" "1"
/ini "skilling.ini" "Default" "DoCon" "1"
/ini "skilling.ini" "Default" "DoDiv" "1"
/ini "skilling.ini" "Default" "DoEvo" "1"
/Ini "skilling.ini" "Default" "DoSpec" "1"
/Ini "skilling.ini" "Default" "DoBard" "1"
/ini "skilling.ini" "Default" "DoWarp" "0"
/ini "skilling.ini" "Default" "Abjuration" "NULL"
/ini "skilling.ini" "Default" "Alteration" "NULL"
/ini "skilling.ini" "Default" "Conjuration" "NULL"
/ini "skilling.ini" "Default" "Divination" "NULL"
/ini "skilling.ini" "Default" "Evocation" "NULL"
/ini "skilling.ini" "Default" "Specialization" "NULL"
/ini "skilling.ini" "Default" "SecondaryForte" "NULL"
| -
| - KeepList Section
/ini "skilling.ini" "KeepList" "Vegetables" "100"
/ini "skilling.ini" "KeepList" "Pod of Water" "100"
/ini "skilling.ini" "KeepList" "Rabbit Meat" "100"
/ini "skilling.ini" "KeepList" "Roots" "100"
/ini "skilling.ini" "KeepList" "Morning Dew" "100"
/ini "skilling.ini" "KeepList" "Sylvan Berries" "100"
/ini "skilling.ini" "KeepList" "Fruit" "100"
/ini "skilling.ini" "KeepList" "Fishing Grubs" "100"
/ini "skilling.ini" "KeepList" "Bark Bindings" "100"
/ini "skilling.ini" "KeepList" "Berries" "100"
/ini "skilling.ini" "KeepList" "Ripened Mango" "100"
/ini "skilling.ini" "KeepList" "Branch of Sylvan Oak" "100"
/ini "skilling.ini" "KeepList" "Fresh Tree Sap" "100"
/ini "skilling.ini" "KeepList" "Yew Leaf" "100"
/ini "skilling.ini" "KeepList" "Summoned: Globe of Water" "100"
/ini "skilling.ini" "KeepList" "Fresh Fish" "60"
/ini "skilling.ini" "KeepList" "Summoned: Halo of Light" "0"
/ini "skilling.ini" "KeepList" "Tattered Cloth Sandal" "0"
/ini "skilling.ini" "KeepList" "Fish Scales" "100"
/ini "skilling.ini" "KeepList" "Rusty Dagger" "0"
/ini "skilling.ini" "KeepList" "Tiny Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "Sewer Catfish" "20"
/ini "skilling.ini" "KeepList" "Large Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "Iksar Phalange" "20"
/ini "skilling.ini" "KeepList" "Humongous Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "9lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "8lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "4lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "3lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "2lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "17lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "15lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "13lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "16lb Fetid Bass" "20"
/ini "skilling.ini" "KeepList" "Dream Dust" "900"
/ini "skilling.ini" "KeepList" "Dream Meat" "900"
/ini "skilling.ini" "KeepList" "Mushroom" "200"
/ini "skilling.ini" "KeepList" "Rune Binding Powder" "100"
/ini "skilling.ini" "KeepList" "KeepList" "NULL" "20"
| -
| - Class Section
/ini "skilling.ini" "Warrior" "ID" "1"
| -
/ini "skilling.ini" "Cleric" "ID" "2"
/ini "skilling.ini" "Cleric" "Specialization" "Alteration"
/ini "skilling.ini" "Cleric" "SecondaryForte" "Evocation"
/ini "skilling.ini" "Cleric" "LevelNeeded" "3"
/ini "skilling.ini" "Cleric" "Abjuration" "Yaulp"
/ini "skilling.ini" "Cleric" "Alteration" "Minor Healing"
/ini "skilling.ini" "Cleric" "Conjuration" "Summon Drink"
/ini "skilling.ini" "Cleric" "Divination" "True North"
/ini "skilling.ini" "Cleric" "Evocation" "Strike"
| -
/ini "skilling.ini" "Paladin" "ID" "3"
/ini "skilling.ini" "Paladin" "LevelNeeded" "16"
/ini "skilling.ini" "Paladin" "Abjuration" "Courage"
/ini "skilling.ini" "Paladin" "Alteration" "Salve"
/ini "skilling.ini" "Paladin" "Conjuration" "Halo of Light"
/ini "skilling.ini" "Paladin" "Divination" "True North"
/ini "skilling.ini" "Paladin" "Evocation" "Cease"
| -
/ini "skilling.ini" "Ranger" "ID" "4"
/ini "skilling.ini" "Ranger" "LevelNeeded" "10"
/ini "skilling.ini" "Ranger" "Abjuration" "Skin like Wood"
/ini "skilling.ini" "Ranger" "Alteration" "Salve"
/ini "skilling.ini" "Ranger" "Conjuration" "Dance of the Fireflies"
/ini "skilling.ini" "Ranger" "Divination" "Glimpse"
/ini "skilling.ini" "Ranger" "Evocation" "Flame Lick"
| -
/ini "skilling.ini" "Shadow Knight" "ID" "5"
/ini "skilling.ini" "Shadow Knight" "LevelNeeded" "18"
/ini "skilling.ini" "Shadow Knight" "Abjuration" "Endure Cold"
/ini "skilling.ini" "Shadow Knight" "Alteration" "Siphon Strength"
/ini "skilling.ini" "Shadow Knight" "Conjuration" "Spike of Disease"
/ini "skilling.ini" "Shadow Knight" "Divination" "Sense the Dead"
/ini "skilling.ini" "Shadow Knight" "Evocation" "Ward Undead"
| -
/ini "skilling.ini" "Druid" "ID" "6"
/ini "skilling.ini" "Druid" "Specialization" "Alteration"
/ini "skilling.ini" "Druid" "SecondaryForte" "Evocation"
/ini "skilling.ini" "Druid" "LevelNeeded" "1"
/ini "skilling.ini" "Druid" "Abjuration" "Skin like Wood"
/ini "skilling.ini" "Druid" "Alteration" "Minor Healing"
/ini "skilling.ini" "Druid" "Conjuration" "Dance of the Fireflies"
/ini "skilling.ini" "Druid" "Divination" "Sense Animals"
/ini "skilling.ini" "Druid" "Evocation" "Burst of Flame"
| -
/ini "skilling.ini" "Monk" "ID" "7"
| -
/ini "skilling.ini" "Bard" "ID" "8"
/ini "skilling.ini" "Bard" "LevelNeeded" "42"
/ini "skilling.ini" "Bard" "Brass Instruments" "McVaxius' Berserker Crescendo"
/ini "skilling.ini" "Bard" "Percussion Instruments" "Chant of Battle"
/ini "skilling.ini" "Bard" "Sing" "Jonthan's Whistling Warsong"
/ini "skilling.ini" "Bard" "Stringed Instruments" "Hymn of Restoration"
/ini "skilling.ini" "Bard" "Wind Instruments" "Cinda's Charismatic Carillon"
| -
/ini "skilling.ini" "Rogue" "ID" "9"
| -
/ini "skilling.ini" "Shaman" "ID" "10"
/ini "skilling.ini" "Shaman" "Specialization" "Alteration"
/ini "skilling.ini" "Shaman" "SecondaryForte" "Conjuration"
/ini "skilling.ini" "Shaman" "LevelNeeded" "2"
/ini "skilling.ini" "Shaman" "Abjuration" "Inner Fire"
/ini "skilling.ini" "Shaman" "Alteration" "Minor Healing"
/ini "skilling.ini" "Shaman" "Conjuration" "Summon Drink"
/ini "skilling.ini" "Shaman" "Divination" "True North"
/ini "skilling.ini" "Shaman" "Evocation" "Burst of Flame"
| -
/ini "skilling.ini" "Necromancer" "ID" "11"
/ini "skilling.ini" "Necromancer" "Specialization" "Alteration"
/ini "skilling.ini" "Necromancer" "SecondaryForte" "Evocation"
/ini "skilling.ini" "Necromancer" "LevelNeeded" "6"
/ini "skilling.ini" "Necromancer" "Abjuration" "Minor Shielding"
/ini "skilling.ini" "Necromancer" "Alteration" "Lifetap"
/ini "skilling.ini" "Necromancer" "Conjuration" "Disease Cloud"
/ini "skilling.ini" "Necromancer" "Divination" "Sense the Dead"
/ini "skilling.ini" "Necromancer" "Evocation" "Ward Undead"
| -
/ini "skilling.ini" "Wizard" "ID" "12"
/ini "skilling.ini" "Wizard" "Specialization" "Evocation"
/ini "skilling.ini" "Wizard" "SecondaryForte" "Alteration"
/ini "skilling.ini" "Wizard" "LevelNeeded" "9"
/ini "skilling.ini" "Wizard" "Abjuration" "Minor Shielding"
/ini "skilling.ini" "Wizard" "Alteration" "Root"
/ini "skilling.ini" "Wizard" "Conjuration" "Halo of Light"
/ini "skilling.ini" "Wizard" "Divination" "True North"
/ini "skilling.ini" "Wizard" "Evocation" "Frost Bolt"
| -
/ini "skilling.ini" "Magician" "ID" "13"
/ini "skilling.ini" "Magician" "Specialization" "Evocation"
/ini "skilling.ini" "Magician" "SecondaryForte" "Conjuration"
/ini "skilling.ini" "Magician" "LevelNeeded" "7"
/ini "skilling.ini" "Magician" "Abjuration" "Minor Shielding"
/ini "skilling.ini" "Magician" "Alteration" "Renew Elements"
/ini "skilling.ini" "Magician" "Conjuration" "Summon Food"
/ini "skilling.ini" "Magician" "Divination" "True North"
/ini "skilling.ini" "Magician" "Evocation" "Burst of Flame"
| -
/ini "skilling.ini" "Enchanter" "ID" "14"
/ini "skilling.ini" "Enchanter" "Specialization" "Alteration"
/ini "skilling.ini" "Enchanter" "SecondaryForte" "Conjuration"
/ini "skilling.ini" "Enchanter" "LevelNeeded" "7"
/ini "skilling.ini" "Enchanter" "Abjuration" "Minor Shielding"
/ini "skilling.ini" "Enchanter" "Alteration" "Strengthen"
/ini "skilling.ini" "Enchanter" "Conjuration" "Pendril's Animation"
/ini "skilling.ini" "Enchanter" "Divination" "True North"
/ini "skilling.ini" "Enchanter" "Evocation" "Chaotic Feedback"
| -
/ini "skilling.ini" "Beastlord" "ID" "15"
/ini "skilling.ini" "Beastlord" "LevelNeeded" "17"
/ini "skilling.ini" "Beastlord" "Abjuration" "Inner Fire"
/ini "skilling.ini" "Beastlord" "Alteration" "Salve"
/ini "skilling.ini" "Beastlord" "Conjuration" "Summon Drink"
/ini "skilling.ini" "Beastlord" "Divination" "Sense Animals"
/ini "skilling.ini" "Beastlord" "Evocation" "Blast of Frost"
| -
/ini "skilling.ini" "Berzerker" "ID" "16"
| -
| - Player Character Section
/call AddChar
| -
| - Zone Section
/call AddZone
| -
/echo The ini file has been created.
/echo The macro is ending so that so the file can be
/echo adjusted for individual needs.
/echo Restart the macro after adjusting the file.
/endmac
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Add Character
Sub AddChar
| - Player Character Section
/ini "skilling.ini" "${Me.Name}" "MaxSave" "${Ini[skilling.ini,Default,MaxSave]}"
/ini "skilling.ini" "${Me.Name}" "DoFish" "${Ini[skilling.ini,Default,DoFish]}"
/ini "skilling.ini" "${Me.Name}" "PersistFish" "${Ini[skilling.ini,Default,PersistFish]}"
/ini "skilling.ini" "${Me.Name}" "LangPract" "${Ini[skilling.ini,Default,LangPract]}"
/ini "skilling.ini" "${Me.Name}" "NumLangs" "${Ini[skilling.ini,Default,NumLangs]}"
/ini "skilling.ini" "${Me.Name}" "PersistLang" "${Ini[skilling.ini,Default,PersistLang]}"
/ini "skilling.ini" "${Me.Name}" "DoBeg" "${Ini[skilling.ini,Default,DoBeg]}"
/if (${Me.SkillCap[Tracking]} > 0) /ini "skilling.ini" "${Me.Name}" "DoTrack" "${Ini[skilling.ini,Default,DoTrack]}"
/if (${Me.SkillCap[Forage]} > 0) {
/ini "skilling.ini" "${Me.Name}" "DoForage" "${Ini[skilling.ini,Default,DoForage]}"
/ini "skilling.ini" "${Me.Name}" "PersistForage" "${Ini[skilling.ini,Default,PersistForage]}"
}
/if (${Me.SkillCap[Sneak]} > 0) /ini "skilling.ini" "${Me.Name}" "DoSneak" "${Ini[skilling.ini,Default,DoSneak]}"
/if (${Me.SkillCap[Hide]} > 0) {
/ini "skilling.ini" "${Me.Name}" "DoHide" "${Ini[skilling.ini,Default,DoHide]}"
/ini "skilling.ini" "${Me.Name}" "PersistHide" "${Ini[skilling.ini,Default,PersistHide]}"
}
/if (${Me.SkillCap[Feign Death]} > 0) /ini "skilling.ini" "${Me.Name}" "DoFeign" "${Ini[skilling.ini,Default,DoFeign]}"
/if (${Me.SkillCap[Mend]} > 0) /ini "skilling.ini" "${Me.Name}" "DoMend" "${Ini[skilling.ini,Default,DoMend]}"
/if (${Me.SkillCap[Meditate]} > 0) /ini "skilling.ini" "${Me.Name}" "DoMed" "${Ini[skilling.ini,Default,DoMed]}"
/if (${Me.SkillCap[Pick Pocket]} > 0) /ini "skilling.ini" "${Me.Name}" "DoPick" "${Ini[skilling.ini,Default,DoPick]}"
/if (${Me.SkillCap[Sense Traps]} > 0) /ini "skilling.ini" "${Me.Name}" "DoSenseTraps" "${Ini[skilling.ini,Default,DoSenseTraps]}"
/if (${Me.SkillCap[Abjuration]} > 0) /ini "skilling.ini" "${Me.Name}" "DoAbj" "${Ini[skilling.ini,Default,DoAbj]}"
/if (${Me.SkillCap[Alteration]} > 0) /ini "skilling.ini" "${Me.Name}" "DoAlt" "${Ini[skilling.ini,Default,DoAlt]}"
/if (${Me.SkillCap[Conjuration]} > 0) /ini "skilling.ini" "${Me.Name}" "DoCon" "${Ini[skilling.ini,Default,DoCon]}"
/if (${Me.SkillCap[Divination]} > 0) /ini "skilling.ini" "${Me.Name}" "DoDiv" "${Ini[skilling.ini,Default,DoDiv]}"
/if (${Me.SkillCap[Evocation]} > 0) /ini "skilling.ini" "${Me.Name}" "DoEvo" "${Ini[skilling.ini,Default,DoEvo]}"
/if (${Me.Class.ID} == 8) {
/ini "skilling.ini" "${Me.Name}" "DoBard" "${Ini[skilling.ini,Default,DoBard]}"
} else {
/ini "skilling.ini" "${Me.Name}" "DoBard" "0"
}
/if (${Me.SkillCap["Specialize Abjure"]} > 0) /ini "skilling.ini" "${Me.Name}" "Specialization" "${Ini[skilling.ini,${Me.Class.Name},Specialization]}"
/if (${Me.SkillCap["Specialize Abjure"]} > 0) /ini "skilling.ini" "${Me.Name}" "SecondaryForte" "${Ini[skilling.ini,${Me.Class.Name},SecondaryForte]}"
/if (${Me.SkillCap["Specialize Abjure"]} > 0) /ini "skilling.ini" "${Me.Name}" "DoSpec" "${Ini[skilling.ini,Default,DoSpec]}"
/if (${Me.SkillCap[Abjuration]} > 0) /ini "skilling.ini" "${Me.Name}" "LevelNeeded" "${Ini[skilling.ini,${Me.Class.Name},LevelNeeded]}"
/if (${Me.SkillCap[Abjuration]} > 0) /ini "skilling.ini" "${Me.Name}" "Abjuration" "${Ini[skilling.ini,${Me.Class.Name},Abjuration]}"
/if (${Me.SkillCap[Alteration]} > 0) /ini "skilling.ini" "${Me.Name}" "Alteration" "${Ini[skilling.ini,${Me.Class.Name},Alteration]}"
/if (${Me.SkillCap[Conjuration]} > 0) /ini "skilling.ini" "${Me.Name}" "Conjuration" "${Ini[skilling.ini,${Me.Class.Name},Conjuration]}"
/if (${Me.SkillCap[Divination]} > 0) /ini "skilling.ini" "${Me.Name}" "Divination" "${Ini[skilling.ini,${Me.Class.Name},Divination]}"
/if (${Me.SkillCap[Evocation]} > 0) /ini "skilling.ini" "${Me.Name}" "Evocation" "${Ini[skilling.ini,${Me.Class.Name},Evocation]}"
/if (${Me.SkillCap[Brass Instruments]} > 0) /ini "skilling.ini" "${Me.Name}" "Brass Instruments" "${Ini[skilling.ini,${Me.Class.Name},Brass Instruments]}"
/if (${Me.SkillCap[Percussion Instruments]} > 0) /ini "skilling.ini" "${Me.Name}" "Percussion Instruments" "${Ini[skilling.ini,${Me.Class.Name},Percussion Instruments]}"
/if (${Me.SkillCap[Sing]} > 0) /ini "skilling.ini" "${Me.Name}" "Sing" "${Ini[skilling.ini,${Me.Class.Name},Sing]}"
/if (${Me.SkillCap[Stringed Instruments]} > 0) /ini "skilling.ini" "${Me.Name}" "Stringed Instruments" "${Ini[skilling.ini,${Me.Class.Name},Stringed Instruments]}"
/if (${Me.SkillCap[Wind Instruments]} > 0) /ini "skilling.ini" "${Me.Name}" "Wind Instruments" "${Ini[skilling.ini,${Me.Class.Name},Wind Instruments]}"
/ini "skilling.ini" "${Me.Name}" "DoWarp" "${Ini[skilling.ini,Default,DoWarp]}"
/varset IniChanged 1
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Add Zone
Sub AddZone
/if (${Bool[${Ini[skilling.ini,"The Feerrott"]}]}) /goto :FeerrottExists
/ini "skilling.ini" "The Feerrott" "MerchantName" "Kogg"
/ini "skilling.ini" "The Feerrott" "BegTarget" "Kogg"
/ini "skilling.ini" "The Feerrott" "StartY" "1038"
/ini "skilling.ini" "The Feerrott" "StartX" "1456"
/ini "skilling.ini" "The Feerrott" "StartZ" "-22"
/ini "skilling.ini" "The Feerrott" "Heading" "147"
/ini "skilling.ini" "The Feerrott" "Notes" "There are no fishing poles available on this merchant. Stock up before strarting the macro."
:FeerrottExists
| -
/if (${Bool[${Ini[skilling.ini,"North Desert of Ro"]}]}) /goto :NoRoExists
/ini "skilling.ini" "North Desert of Ro" "MerchantName" "Juni"
/ini "skilling.ini" "North Desert of Ro" "BegTarget" "Puntar"
/ini "skilling.ini" "North Desert of Ro" "StartY" "6936"
/ini "skilling.ini" "North Desert of Ro" "StartX" "-2771"
/ini "skilling.ini" "North Desert of Ro" "StartZ" "3"
/ini "skilling.ini" "North Desert of Ro" "Heading" "264"
/ini "skilling.ini" "North Desert of Ro" "Notes" "There will be a little movement to the beg target.
:NoRoExists
| -
/if (${Bool[${Ini[skilling.ini,"East Freeport"]}]}) /goto :EastFreeportExists
/ini "skilling.ini" "East Freeport" "MerchantName" "Tanlok"
/ini "skilling.ini" "East Freeport" "BegTarget" "Tanlok"
/ini "skilling.ini" "East Freeport" "StartY" "-417"
/ini "skilling.ini" "East Freeport" "StartX" "-790"
/ini "skilling.ini" "East Freeport" "StartZ" "7"
/ini "skilling.ini" "East Freeport" "Heading" "268"
/ini "skilling.ini" "East Freeport" "Notes" "There is a lot of space between the fishing spot and the merchant. Begging or pick pocketing in this spot is really not effective."
:EastFreeportExists
| -
/if (${Bool[${Ini[skilling.ini,"The Commonlands"]}]}) /goto :TheCommonlandsExists
/ini "skilling.ini" "The Commonlands" "MerchantName" "Maula"
/ini "skilling.ini" "The Commonlands" "BegTarget" "Modren"
/ini "skilling.ini" "The Commonlands" "StartY" "422"
/ini "skilling.ini" "The Commonlands" "StartX" "2385"
/ini "skilling.ini" "The Commonlands" "StartZ" "-35"
/ini "skilling.ini" "The Commonlands" "Heading" "161"
/ini "skilling.ini" "The Commonlands" "Notes" "This spot works well."
:TheCommonlandsExists
| -
/if (${Bool[${Ini[skilling.ini,"Erud's Crossing"]}]}) /goto :ErudsCrossingExists
/ini "skilling.ini" "Erud's Crossing" "MerchantName" "Renna"
/ini "skilling.ini" "Erud's Crossing" "BegTarget" "Kala"
/ini "skilling.ini" "Erud's Crossing" "StartY" "-1319"
/ini "skilling.ini" "Erud's Crossing" "StartX" "752"
/ini "skilling.ini" "Erud's Crossing" "StartZ" "-17"
/ini "skilling.ini" "Erud's Crossing" "Heading" "275"
/ini "skilling.ini" "Erud's Crossing" "Notes" "Renna is in a building that may require warping to avoid excessive obstacle avoidance."
:ErudsCrossingExists
| -
/if (${Bool[${Ini[skilling.ini,"The Ocean of Tears"]}]}) /goto :TOOTExists
/ini "skilling.ini" "The Ocean of Tears" "MerchantName" "Endan"
/ini "skilling.ini" "The Ocean of Tears" "BegTarget" "Zachariah"
/ini "skilling.ini" "The Ocean of Tears" "StartY" "-1250"
/ini "skilling.ini" "The Ocean of Tears" "StartX" "7458"
/ini "skilling.ini" "The Ocean of Tears" "StartZ" "-276"
/ini "skilling.ini" "The Ocean of Tears" "Heading" "307"
/ini "skilling.ini" "The Ocean of Tears" "Notes" "This is a nice, isolated spot and well suited to fishing."
:TOOTExists
| -
/if (${Bool[${Ini[skilling.ini,"The Plane of Tranquility"]}]}) /goto :TranqExists
/ini "skilling.ini" "The Plane of Tranquility" "MerchantName" "Rataga"
/ini "skilling.ini" "The Plane of Tranquility" "BegTarget" "Rugurt"
/ini "skilling.ini" "The Plane of Tranquility" "StartY" "-796"
/ini "skilling.ini" "The Plane of Tranquility" "StartX" "-1080"
/ini "skilling.ini" "The Plane of Tranquility" "StartZ" "-935"
/ini "skilling.ini" "The Plane of Tranquility" "Heading" "239"
/ini "skilling.ini" "The Plane of Tranquility" "Notes" "This is a nice spot well suited to fishing. The vendor is up some stairs so warping may be required."
:TranqExists
| -
/if (${Bool[${Ini[skilling.ini,"The Plane of Knowledge"]}]}) /goto :POKExists
/ini "skilling.ini" "The Plane of Knowledge" "MerchantName" "Daeld"
/ini "skilling.ini" "The Plane of Knowledge" "BegTarget" "Daeld"
/ini "skilling.ini" "The Plane of Knowledge" "StartY" "20"
/ini "skilling.ini" "The Plane of Knowledge" "StartX" "1434"
/ini "skilling.ini" "The Plane of Knowledge" "StartZ" "-124"
/ini "skilling.ini" "The Plane of Knowledge" "Heading" "94"
/ini "skilling.ini" "The Plane of Knowledge" "Notes" "Use this spot at your own risk. You have been warned!"
:POKExists
| -
/if (${Bool[${Ini[skilling.ini,"Butcherblock Mountains"]}]}) /goto :BBMtnsExists
/ini "skilling.ini" "Butcherblock Mountains" "MerchantName" "Parn"
/ini "skilling.ini" "Butcherblock Mountains" "BegTarget" "Balen"
/ini "skilling.ini" "Butcherblock Mountains" "StartY" "1495"
/ini "skilling.ini" "Butcherblock Mountains" "StartX" "2967"
/ini "skilling.ini" "Butcherblock Mountains" "StartZ" "-1254"
/ini "skilling.ini" "Butcherblock Mountains" "Heading" "88"
/ini "skilling.ini" "Butcherblock Mountains" "Notes" "This spot works well."
:BBMtnsExists
| -
/if (${Bool[${Ini[skilling.ini,"Timorous Deep"]}]}) /goto :TimorousExists
/ini "skilling.ini" "Timorous Deep" "MerchantName" "Seloris"
/ini "skilling.ini" "Timorous Deep" "BegTarget" "Seloris"
/ini "skilling.ini" "Timorous Deep" "StartY" "-5008"
/ini "skilling.ini" "Timorous Deep" "StartX" "-3440"
/ini "skilling.ini" "Timorous Deep" "StartZ" "21"
/ini "skilling.ini" "Timorous Deep" "Heading" "180"
/ini "skilling.ini" "Timorous Deep" "Notes" "This is a good spot for fishing, not as good for begging or pickpocketing."
:TimorousExists
| -
/if (${Bool[${Ini[skilling.ini,"Neriak - Commons"]}]}) /goto :NeriakCommonsExists
/ini "skilling.ini" "Neriak - Commons" "MerchantName" "Mariz"
/ini "skilling.ini" "Neriak - Commons" "BegTarget" "Isvan"
/ini "skilling.ini" "Neriak - Commons" "StartY" "-260"
/ini "skilling.ini" "Neriak - Commons" "StartX" "-1030"
/ini "skilling.ini" "Neriak - Commons" "StartZ" "-36"
/ini "skilling.ini" "Neriak - Commons" "Heading" "274"
/ini "skilling.ini" "Neriak - Commons" "Notes" "This is a good spot for fishing and begging but stock up because the fishing merchant cannot be reached without warping."
:NeriakCommonsExists
| -
/if (${Bool[${Ini[skilling.ini,"Cabilis East"]}]}) /goto :CabilisEastExists
/ini "skilling.ini" "Cabilis East" "MerchantName" "Foxmyr"
/ini "skilling.ini" "Cabilis East" "BegTarget" "Foxmyr"
/ini "skilling.ini" "Cabilis East" "StartY" "133"
/ini "skilling.ini" "Cabilis East" "StartX" "-230"
/ini "skilling.ini" "Cabilis East" "StartZ" "4"
/ini "skilling.ini" "Cabilis East" "Heading" "270"
/ini "skilling.ini" "Cabilis East" "Notes" "This is a good spot for fishing. Begging will require movement so the skilling will take longer."
:CabilisEastExists
/if (${Bool[${Ini[skilling.ini,"${Zone.Name}"]}]}) /goto :ZoneExists
/ini "skilling.ini" "${Zone.Name}" "MerchantName" "NULL"
/ini "skilling.ini" "${Zone.Name}" "BegTarget" "NULL"
/ini "skilling.ini" "${Zone.Name}" "StartY" "${Me.Y}"
/ini "skilling.ini" "${Zone.Name}" "StartX" "${Me.X}"
/ini "skilling.ini" "${Zone.Name}" "StartZ" "${Me.Z}"
/ini "skilling.ini" "${Zone.Name}" "Heading" "${Me.Heading.DegreesCCW}"
/ini "skilling.ini" "${Zone.Name}" "Notes" "There are no notes yet for this zone."
:ZoneExists
/varset IniChanged 1
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: GM Check
Sub GMCheck
/if (${Spawn[gm].ID}) {
/beep
/beep
/beep
/echo A GM has entered the zone!
/echo A most depressing interruption but pausing the macro...
/keypress forward
/keypress back
/delay 10m
/goto :MainLoop
}
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Event Zoned
Sub Event_Zoned
/echo Zoned
/delay 60s
/quit
/endmacro
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Event Out of Money
Sub Event_Broke
/echo You have run out of money. Suspending fishing.
/varset DoFish 0
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Event Inventory Full
Sub Event_InventoryFull
/echo Your inventory is full. Suspending fishing.
/varset DoFish 0
/varset InvFull 1
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Language in Use
Sub Event_Language_In_Use(LText,LName,LNum)
/if (${LangPract} == 0) /return
/varset LangName ${LName}
/varset LangNum ${LNum}
|++ /echo Using Language ${LNum} - ${LName}.
/popup Using Language ${LangNum} - ${LangName}.
/varset SpamLang ${LangNum}
/delay 10
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Not a known language
Sub Event_NotALanguage
/popup Not a valid language. Changing to Common.
/varset SpamLang 1
/delay 1s
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Message received to change language
Sub Event_ChangeLang
/echo Message received. Changing language.
/varset SpamLang ${Math.Calc[${SpamLang}+1]}
/lang ${SpamLang}
/varset LangHold ${SpamLang}
/delay 1s
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Event Change Language at Maxxed Language
Sub Event_MaxLang
/g Change language
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Out of Room
Sub Event_OutofRoom
/echo You have run out of room in inventory.
/echo Detroying ${Cursor.Name}.
/popup You have run out of room in inventory!
/destroy
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
| - SUB: Holding Something
Sub Event_Holding
/call HandleItem
/return
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
/endmac
| - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| -
| - _______________________________________________________
| - End of the Macro
| - _______________________________________________________
Last edited:




