Magic Skill-Up Script, by Nimotas
I originally built my own version of a skill-up script using Windower scripting but ran into problems with it crashing after running a while. A few years ago when I started learning about Spellcast, I found the Skillup.xml (2009, v1.0) by GenesisX (Windower Forums) and started using it. Over the years I slowly modified that original coding to fit my needs adding in new functions and usability. Recently I discovered that GenesisX had released an updated Skillup.xml (2011, v1.5) with some cool new features such as utilizing Refresh spell, and an improved resting MP system based on the user's MP level rather than resting a set period of time.
In this script, I have incorporated all the features from GenesisX's Skill-Up scripts and made several modifications/enhancements of my own. E.g. the ability to specify which avatars to use, added support for BRD, and all other magic casting jobs, use of Haste, Refresh, and Light Arts, etc... I want to give special thanks to GenesisX for writing the original coding this is based on and providing it to the community.
My goal was to modify the script and write these instructions in order to make it as simple as possible to use so that people who may not have much experience with Spellcast can benefit from using it with little difficulty. If something doesn't work, please post a reply with a description of the problem (it might help to run the script with Show.Debug=True in order to see where the script isn't working). You may also reply to this post if you have suggestions for features to be added. I will do my best to keep this script updated and will add features that I deem appropriate from user suggestions. Also, as with any xml posted, feel free to modify this script to fit your needs.
!!! Disclaimer !!!
This should go without saying… technically, use of Spellcast (i.e. using this script), or any third-party program, is against the Play Online EULA and is a bannable offense. I am not responsible for any damages or consequences which may result from using this script. Use this script at your own risk!
If you are smart about using this script (i.e. don't stand in the middle of Jeuno running it continuously for days on end), then you should be fine. Just use some common sense.
Getting Started / Setup
To get started, you'll need to copy/paste the code (at the bottom of post) into a blank .xml file (skillup.xml) located in the Spellcast folder.
The Custom Variables
Listed below are the custom variables you will need to set before running the script.
Debug Messages
By default, this variable is set to "True". Setting this variable to "True" will show a custom debug log to assist with debugging errors or for users that may wish to dissect the script and see what's going on behind the scenes. Change this variable to "False" if you do not want to see the debug messages. The messages cannot be read by GM's, so don't worry about that.
Added in v3.7, users can now toggle debug messages on/off while running the script by pressing F11.
Code
<var name="Show.Debug">True</var> <!-- Show Process/Debug Info True/False -->
Automatic End Script Variables
This bit of coding is to allow the user to specify the game day and time when the script will automatically end. This is useful if you only want the script to run a few hours then end while you're AFK. This will prevent the script from running continuously 24/7 for days on end. If, however, you want it to run continuously, leave the variable blank. Personally, I don't like running it for more than a few hours at a time.
To estimate the length of time it will run, each game day lasts for 24 game hours from 0:00 - 24:00 which is 57 minutes, 36 seconds earth time. Therefore, if the script is started at the beginning of Earthsday and is set to end on Iceday at 0.00 time, it will run for a little less than 3 hours earth time.
Code
<!-- Automatic Script End Variables -->
<!-- Order of Days: Firesday -> Earthsday -> Watersday -> Windsday -> Iceday -> Lightningday -> Lightsday -> Darksday -->
<var name="SUEndDay">Firesday</var> <!-- Change value to the name of the day you want the script to auto end or leave blank for continuous run. -->
<var name="SUEndTime">0.00</var> <!-- Change value to the time of the day you want the script to auto end -->
Skill-Up Food
In this section , users can set whether they wasn’t the script to use food or not and which food to use. By default this is set to "False". Changing this to "True" will allow the script to use the specified food from your inventory. As long as you have the food in your inventory, the script will use it. If you run out of food, the script will attempt to use food once then continue to skill up without food and will not attempt to use it again.
Code
<!-- You can alter these variables to use Skill UP food or not. -->
<var name="UseFood">False</var> <!-- Use skill-up food True/False -->
<var name="FoodName">B.E.W Pitaru</var> <!-- Valid Magic Food: Stuffed Pitaru, Poultry Pitaru, Seafood Pitaru, B.E.W Pitaru -->
Wait Times between Actions/Casting
These variables have been added to give you custom wait times between each action. This may be useful in laggy areas/connections or slower PCs.
Code
<!-- Time is in seconds. -->
<var name="WaitTime4SMN">2</var> <!-- Set time to wait in-between SMN Skill actions -->
<var name="WaitTime4Healing">2</var> <!-- Set time to wait in-between Healing Skill actions -->
<var name="WaitTime4Enhancing">2</var> <!-- Set time to wait in-between Enhancing Skill actions -->
<var name="WaitTime4BLU">2</var> <!-- Set time to wait in-between Blue Magic Skill actions -->
<var name="WaitTime4GEO">2</var> <!-- Set time to wait in-between Geomancy Skill actions -->
<var name="WaitTime4BRD">1</var> <!-- Set time to wait in-between BRD Skill actions -->
<var name="WaitTime4Dark">3</var> <!-- Set time to wait in-between Dark Skill actions -->
<var name="WaitTime4Divine">3</var> <!-- Set time to wait in-between Divine Skill actions -->
<var name="WaitTime4Elemental">2</var> <!-- Set time to wait in-between Elemental Skill actions -->
<var name="WaitTime4Enfeebling">2</var> <!-- Set time to wait in-between Enfeebling Skill actions -->
<var name="WaitTime4RangedAttk">5</var> <!-- Set time to wait in-between Ranged Attacks -->
<var name="WaitTime4Ninjutsu">2</var> <!-- Set time to wait in-between Ninjutsu Spells -->
Summoner Avatars to Use
These variables have been added to give users the ability to specify which avatars to use when skilling up summoning skill.
Code
<!-- Summons: 1= Use, 0= Do not use -->
<var name="CarbuncleAva">1</var> <!-- This must remain set to 1 since all SMN's have Carbuncle -->
<var name="IfritAva">1</var>
<var name="TitanAva">1</var>
<var name="LeviathanAva">1</var>
<var name="GarudaAva">1</var>
<var name="ShivaAva">1</var>
<var name="RamuhAva">1</var>
<var name="FenrirAva">1</var>
<var name="DiabolosAva">1</var>
Setting up Resting and Standing gear
To enhance the speed of the script there is a section you can specify equipment. The two sets of equipment used in this script are, "Resting Gear" set used when resting to restore mp and a "Standard" set used when standing which may have any Fast Cast or Conserve MP+ gear.
Note: When specifying "Resting Gear", you only need to list the equipment which is different from the equipment listed in the "Standard" set.
Example:
Code
<sets>
<!--- Specify Resting / Standard gear if desired --->
<group default="yes" name="Job">
<set name = "Standard">
</set>
<set name = "Resting Gear">
</set>
</group>
</sets>
Would be filled in with equipment like so:
Code
<group name="SCH">
<set name="Standard">
<main>Chatoyant Staff</main>
<sub>Curatio Grip</sub>
<ammo>Incantor Stone</ammo>
<head>Savant's Bonnet +1</head>
<neck>Savant's Chain</neck>
<lear>Loquacious Earring</lear>
<rear>Gifted Earring</rear>
<body>Savant's Gown +1</body>
<hands>Serpentes Cuffs</hands>
<lring>Bifrost Ring</lring>
<rring>Ephedra Ring</rring>
<back>Oretania's Cape</back>
<waist>Hierarch Belt</waist>
<legs>Praeco Slacks</legs>
<feet>Serpentes Sabots</feet>
</set>
<set name="Resting Gear" BaseSet="Standard">
<ammo>Clarus Stone</ammo>
<body>Errant Hpl.</body>
</set>
</group>
Running the Script
Now that all the setup stuff is done, it's time to run the script. To load the .xml file, type "//sc load filename.xml" into the command line. After the script is loaded, cast one of the trigger spells below to start the script.
Note: After the script is loaded up and you perform any action you will get a one-time message informing you of the script being loaded.
Trigger Spells
Cast one of these spells after the xml is loaded to start the skill up process.
Summoning Magic Skill
--Carbuncle - This will start the summoning magic cycle.
Healing Magic Skill
--Cure1 - This will start the healing Magic cycle.
Enhancing Magic Skill
--Protect - This will start the Enhancing magic cycle using protect / shell spells
--Barfira - This will start the Enhancing magic cycle using WHM bar spells.
--Barfire - This will start the Enhancing magic cycle using RDM bar spells.
--Blaze Spikes - This will start the Enhancing magic cycle using BLM spike spells.
Blue Magic Skill
--Pollen - This will start the Blue magic cycle.
Geomancy, Handbell Skill
--Indi-Regen - This will start the Geomancy magic cycle.
BRD Singing/Wind/String Skill
--Fire Carol - This will start the BRD Singing/Wind/String skill cycle.
--Fire Threnody - This will start the BRD Singing/Wind/String skill cycle on selected <t>.
Note: Wind or String skill will be determined by the instrument you equip.
Dark Magic Skill
--Endark - This will start the Dark magic skill cycle using Endark spell on self.
--Bio - This will start the Dark magic skill cycle using Bio spell on target.
Divine Magic Skill
--Enlight - This will start the Divine magic skill cycle.
Elemental Magic Skill
--Burn - This will start the Elemental magic skill cycle using Burn spell on target.
--Fire - This will start the Elemental magic skill cycle using Fire spell on target.
Enfeebling Magic Skill
--Dia - This will start the Enfeebling magic skill cycle using Dia spell on target.
Ninjutsu Magic Skill
--Katon: Ni - This will start the Ninjutsu magic skill cycle on target.
Spell Cycles
Here is the order of spells that will be cast for each cycle. The script will repeat after each cycle. If you happen to be missing a spell, do not worry. The script will continue to run and cycle properly.
Summoning Magic - Carbuncle, Ifrit, Titan, Leviathan, Garuda, Shiva, Ramuh, Fenrir, Diabolos
Note: See Custom Variables section above to set which avatars are available for the script to use.
Healing Magic - Cure1, Cure2, Cure1, Cure2
Enhancing Magic
--via Protect - Protect1, Shell1, Protect2, Shell2
--via WHM Bar spells - Barfira, Barblizzara, Baraera, Barstonra, Barthundra, Barwatera
--via RDM Bar spells - Barfire, Barblizzard, Baraero, Barstone, Barthunder, Barwater
--via Blaze Spikes - Blaze Spikes, Ice Spikes, Shock Spikes
Blue Magic - Pollen, Magic Fruit, Pollen, Magic Fruit
Geomancy Magic - Indi-Regen, Indi-Poison, Indi-Refresh, Indi-Fury, Indi-Barrier, Indi-Precision, Indi-Voidance
BRD Song Skill
-- via Fire Carol - Fire Carol, Ice Carol, Wind Carol, Earth Carol, Lightning Carol, Water Carol, Light Carol, Dark Carol
-- via Fire Threnody- Fire Threnody, Ice Threnody, Wind Threnody, Earth Threnody, Lightning Threnody, Water Threnody, Light Threnody, Dark Threnody
Dark Magic
-- via Endark - Endark, Endark, Endark
-- via Bio - Bio, Bio, Bio
Divine Magic - via EnEnlight, Enlight, Enlight
Elemental Magic
--via Burn - Burn, Frost, Choke, Rasp, Shock, Drown
--via Fire - Fire, Blizzard, Aero, Stone, Thunder, Water
Enfeebling Magic - Dia, Dia, Dia
Ninjutsu Magic - Katon, Suiton, Raiton, Doton, Huton, Hyoton (Ni spells)
Resting MP
The script will cycle through spells for that skill until you are almost out of MP. When your MP is low enough (< 5%) the script will put you into the resting position and stay that way until your MP is full. Then it will stand you back up and continue with casting spells for the selected skill and repeat until given a command to end (see Ending the Script below).
Note: BRD skill up cycle will not rest since it does not use MP.
Light Arts, Avatar's Favor, Haste, and Refresh
Light Arts will automatically be activated if not active and your job or sub job is SCH.
Avatar's Favor will automatically be activated if not active and your job is SMN.
Haste will automatically be cast if not active and your job or sub job is RDM or WHM.
Refresh will automatically be cast if not active:
--If your main job is GEO (lvl > 33), Geo-Refresh spell will be cast.
--If your main job is BLU (lvl > 78), Battery Charge spell will be cast.
--If your main job is RDM (lvl > 81), Refresh II spell will be cast.
--If your main job or sub job is RDM, Refresh spell will be cast.
Pausing the Script
Pressing F12 will pause/resume the script. This function was added to allow the user to pause the script to cast different spells or switch targets. Pressing F12 again will resume the script.
Resetting the Script
Pressing F10 will reload the script without unloading Spellcast. The script must be paused first in order for the reset to work.
Ending the Script
You can press CTRL+Escape at any time to exit the skill-up script or it will automatically end on the day/time specified in the Automatic End Script Variable section. Ending the script will unload Spellcast and reload it after a few seconds with the default xml file.
The Skill-Up Script Code / Change Log
Copy the entire code from the link below into your blank xml file. Then set the variables and equipment before running.
---
SkillUp_V3.9 Released 11/03/14 ---
--Added BRD (Mob Target) Skillup section
Tigger spell: Fire Threnody
--Bugfix: Corrected issue with SMN not releasing pet. Spellcast %PetIsValid variable is broken and always returns "False". Corrected issue by hard coding $PetValid variable.
---
SkillUp_V3.8 Released 10/25/14 ---
--Added Ninjutsu Skillup section
Tigger spell: Katon: Ni
--Bugfix: Updated coding to address looping issue with script attempting to cast Haste spell if job is WHM|RDM and lower than spell level.
--Bugfix: Added logic to check MP level for Haste and Refresh spells to ensure the caster has enough MP to cast the spell. (Thank you Ununium for this suggestion)
--Added logic for RDM main job to cast either Haste II or Haste depending on the caster's job level and appropriate MP level.
--Added ability to use Light Arts or Dark Arts based on spell magic type (WhiteMagic/BlackMagic).
Previously, only Light Arts was used.
--Added section for Ranged Attack skill up (BETA)
This function is not fully working.
---
SkillUp_V3.7 Released 06/09/13 ---
--Added Reset feature: Pressing F10 will reset the script to first run without unloading Spellcast
Script must be paused first in order for reset to work
--Added Debug Message Toggle: Pressing F11 will toggle debug messages On/Off
--Added Pause feature: Pressing F12 will Pause/Resume the script
--Added ability to use Bio spell to skill-up Dark Magic
--Added Elemental Magic Skill-up Segment
Trigger spells: Fire | Burn
--Added Enfeebling Magic Skill-Up Segment
Trigger Spell: Dia
---
SkillUp_V3.6 Released 04/28/13 ---
--Added a cancel command to cancel Protect/Shell buffs before recasting when using the Protect/Shell Enhancing Magic skill cycle.
--Added the use of Avatar's Favor ability for SMN skill cycle
--Added the ability to specify whether or not to use food and what food to use.
If you run out of food, the script will attempt to use food once then continue skilling up without food and will not attempt to use it again.
--Minor code changes to Debug process
--Changed order of <if> checks when Idle for better processing order
---
SkillUp_V3.5 Released 04/27/13 ---
--Added ability to specify SMN avatars to use for spell cycle
--Added support for BRD, GEO, PLD, DRK, BLU, RDM, RUN jobs and magic spells
--Added use of Refresh II if main job is RDM
--Added use of Refresh if main or sub job is RDM
--Added use of Geo-Refresh if main job is GEO
--Added ability to activate Light Arts if main or sub job is SCH
--Added Auto-End coding to allow the ability to specify when the script will auto-end
--Updated resting sequence coding to use MP% and rest to full rather than defined MP amount and resting for set period of time
--Added Debug log function
--Minor cleanup of old code