If you want to replace my old spellcast files, here are the new ones:
DNC - http://pastebin.com/FPUnWtq8
Include - http://pastebin.com/xCekMuPZ
Autoexec - http://pastebin.com/imjiMqjC
It is no longer necessary to custom modify the status.xml file.
If you want to replace my old spellcast files, here are the new ones:
DNC - http://pastebin.com/FPUnWtq8
Include - http://pastebin.com/xCekMuPZ
Autoexec - http://pastebin.com/imjiMqjC
It is no longer necessary to custom modify the status.xml file.
Ok, adjustments I've made:
1) Yugl's recent suggestion that I split the include into two files actually helped. By using that split, I can set up one validation scheme for vars/sets/groups, and a different schema for rules, and avoid the ambiguity conflict. It does mean that to use this scheme validation you'll have to use separate include files for the different types of includes, but overall it's a much easier fix for the problem than I anticipated.
An include that contains vars/sets/groups should have the following top-level element:
Code:<includes xmlns="http://www.windower.net/spellcast/" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.windower.net/spellcast/ spellcastVarsInclude.xsd">
And an include that contains rules should have the following top-level element:
They're identical aside from the xsd file being referenced. Those files need to be saved in the same directory as the spellcast files.Code:<includes xmlns="http://www.windower.net/spellcast/" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.windower.net/spellcast/ spellcastRulesInclude.xsd">
2) I originally built the schema based on the docs on the Windower forums. Going back to verify and fix some things, found some issues where those docs were incomplete.
status: missing value "dead"
when: missing value "all"
slot: missing value "all"
mainjoblvl/subjoblvl aliases 'mlvl' and 'slvl', plus the not/lt/gt variants.
changelock command alias 'lock'.
I've updated to include the missing items.
3) I reworked some of the validation logic to make sure things were more consistent.
4) I really don't like not being able to capitalize words in multi-word element and attribute names, so I caved and added the capitalized versions back in. Plus it's just an annoying problem to validate files where the only corrections are going to be capitalizations; doesn't really help the usefulness of the schema for its intended purpose.
It makes the Intellisense options more crowded, but otherwise doesn't really hurt anything. I left some words where only lowercase was accepted, though (primarily the numeric elements).
I've broken the schema into 7 files. You'll want all of them to make use of the schema validation, though only the first three are used directly in your xmls. The reason for so many files is that a lot of the code was redundant across several of them, and this makes maintenance easier when I find bugs.
The xsd's are:
spellcast.xsd -- Refer to this one for any primary spellcast files.
spellcastIncludeRules.xsd -- Use this for any Include files that only provide rules.
spellcastIncludeVars.xsd -- Use this for any Include files that only provide vars/sets/groups.
They are supported by:
baseSpellcastRules.xsd -- most of the code for handling rules (used by spellcast.xsd and spellcastIncludeRules.xsd)
baseSpellcastVars.xsd -- most of the code for handling vars/sets/groups (used by spellcast.xsd and spellcastIncludeVars.xsd)
baseSpellcastCommon.xsd -- a couple elements that are common to both paths
XInclude.xsd -- The official W3 schema for xinclude.
More missing definitions from the Windower forum documentation:
type: Step, Waltz, Samba, Jig, Flourish 1/2/3, Scholar, Monster and Misc (not entirely sure about Monster, but including anyway)
Fixed some limitations in attribute validation.
Removed (for now) the mlvl and slvl aliases for mainjoblvl and subjoblvl.
Ok, more cleanup. The schemas look pretty final right now.
Have now added the schema reference to all of my xmls, and validated them. Actually found a few bugs, but was mostly just tidying up the text.
Will also note (if it wasn't already obvious) that the schema files are not for your typical user (mainly because the tools to use them are a little bit out of the ordinary). They're more geared for people who write xmls for other people, to validate their work, and for anyone who does a lot of spellcast debugging, as it helps find lots of minor bugs that might otherwise not get noticed.
Obviously, if you use them and have problems with them, let me know.
I've updated my bst script adapted for Motenten's updates.
I really like the keybinds and I use them w/ other jobs. I'd prefer to have it consistent between the jobs I use, and I like the way Motenten has it setup best.
Its working, but I wonder if there is a good recommendation on adding custom offense modes to the cycle.
I've added a custom offense modes. One for killer instinct, and another for pet-priority damage when both pet and master are engaged. However, i would like the pet-priority to be in they offense mode cycle. I could replace one of the existing ones, which I don't use... bst has little use for so many offense modes while in TP. However, if I do that, the labeling will be wrong.
Do I really have to copy the entire cycle logic into my main file to have the custom pet offense mode there?
You have a few possible options.
1) Something I've messed with a bit is to have a series of 'mode' variables, and set the cycle based on a number. This allows easy customization per job, but makes it mostly impossible to directly set a particular mode value; you have to use the cycle option. This may or may not be an actual problem; I don't think I've ever used a direct setting for modes like that.
However this would require a bit more than just trivial code changes, so isn't easy to pass on in a post like this. I may update my overall XMLs to this later, though.
2) Tweak the available mode settings within the include itself. This is a little bit touchy, but not too difficult. Downside is that those new modes you add become accessible to every job.
3) Make use of the $Use-OffenseMode variable to override the default OffenseMode. You can set this in your own local logic per XML without having to mess with the includes or completely rewrite the standard OffenseMode settings. Downside is that it's outside the standard cycles, so you can't use the normal keybinds for it; you have to set up your own custom trigger to adjust it.
Thank you. I'll probably use the use-offensemode to override it again. This is what I used for killer instinct.
Also, I've had trouble w/ the cancel sneak rule for spectral jig w/ the new include. I rewrote it in each job XML as a qd work around.
I've finished my bst xml which is based off Motenten's include files.
I changed the method I use for ready moves slightly. I use 2 custom triggers. One executes the selected ready move, the other cycles thru the ready moves for that pet. I'm pleased w/ it because I often use 1 ready move over and over. Also, this reduces my ready move macros from 4 to 2 and allows greater selection of ready moves. which is nice for my button-busy bst/dnc.
The Crit offense mode is currently being used as a pet priorty tp mode. it is for when you tp along-side your pet, but gear gives preference to pet haste over capping master dd stats. This is often the most optimal for solo or fighting low level mobs. Pets hit them harder.
Using Killer Instinct will lock Ferine Gausape in place unless you are lowhp/weak.
The file is Xilk-BST v2.xml in my pastebin.
includeing this here if anyone wants a basic sch.xml with no includes
http://pastebin.com/3B4s6BkV
Added Damane's SCH XML.
someone make an Annihilator RNG xml preeeze! Something with last stand and coronach sets would be fabulous heck maybe even some of the jobs JA with gear swaps etc. Everything iv'e seen online is very underwhelming and no way could i make one myself. /sadface
RNG xml for AnnihilatorCode:<?xml version="1.0" ?> <spellcast xmlns:xi="http://www.w3.org/2001/XInclude"> <config /> <variables> <var name="WType">Gun</var> <var name="UShot">N</var> <var name="Barrage">Normal</var> </variables> <sets> <group name="RNG" default="yes"> <set name="RapidSnap"> <head>Sylvan Gapette +2</head> <neck>Houyi's Gorget</neck> <lear>Brutal Earring</lear> <rear>Volley Earring</rear> <body>Sylvan Caban +2</body> <hands>Blood Fng. Gnt.</hands> <lring>Bellona's Ring</lring> <rring>Rajas Ring</rring> <back>Sylvan Chlamys</back> <waist>Impulse Belt</waist> <legs>Mustela Brais</legs> <feet>Sylvan Bottln. +2</feet> </set> <set name="Idle" baseset="RapidSnap"> <head>Oce. Headpiece +1</head> <neck>Wiglen Gorget</neck> <body>Khepri Jacket</body> <hands>Syl. Glvltte. +2</hands> <lring>Paguroidea Ring</lring> <rring>Sheltered Ring</rring> <legs>Mirador Trousers</legs> <feet>Fajin Boots</feet> </set> <set name="mdt"> <neck>Twilight Torque</neck> <lear>Merman's Earring</lear> <rear>Merman's Earring</rear> <body>Avalon Breastplate</body> <hands>Denali Wristbands</hands> <lring>Minerva's Ring</lring> <rring>Shadow Ring</rring> <back>Engulfer Cape</back> <feet>Suzaku's Sune-Ate</feet> </set> <set name="pdt"> <head>Dux Visor +1</head> <neck>Wiglen Gorget</neck> <rear>Black Earring</rear> <lear>Darkness Earring</lear> <body>Dux Sc. Mail +1</body> <hands>Denali Wristbands</hands> <lring>Dark Ring</lring> <rring>Dark Ring</rring> <back>Mollusca Mantle</back> </set> <set name="Shooting Bow Normal" baseset="RapidSnap"> <body>Khepri Jacket</body> <hands>Syl. Glvltte. +2</hands> <lring>Tyrant's Ring</lring> <waist>Goading Belt</waist> <legs>Sylvan Bragues +2</legs> <feet>Gules Leggings +1</feet> </set> <set name="Shooting Bow Barrage" baseset="Shooting Bow Normal"> <head>Sylvan Gapette +2</head> <lear>Clearview Earring</lear> <neck>Rancor Collar</neck> <hands>Htr. Bracers +1</hands> <back>Libeccio Mantle</back> <waist>Scout's Belt</waist> <legs>Desultor Tassets</legs> <feet>Sct. Socks +2</feet> </set> <set name="Shooting XBow Normal" baseset="RapidSnap"> <hands>Praeda Gauntlets</hands> <feet>Praeda Sabatons</feet> <waist>Crudelis Belt</waist> <legs>Htr. Braccae +1</legs> </set> <set name="Shooting XBow Barrage" baseset="Shooting XBow Normal"> <hands>Htr. Bracers +1</hands> <back>Libeccio Mantle</back> <legs>Mirador Trousers</legs> <feet>Sylvan Bottln. +2</feet> </set> <set name="Shooting Gun Normal" baseset="RapidSnap"> <head>Sct. Beret +2</head> <neck>Sylvan Scarf</neck> <lear>Clearview Earring</lear> <hands>Blood Fng. Gnt.</hands> <lring>Bellona's Ring</lring> <rring>Hajduk Ring</rring> <back>Libeccio Mantle</back> <waist>Scout's Belt</waist> <legs>Sct. Braccae +2</legs> <feet>Scout's Socks +2</feet> </set> <set name="Shooting Gun Barrage" baseset="Shooting Gun Normal"> <head>Sylvan Gapette +2</head> <lear>Clearview Earring</lear> <neck>Rancor Collar</neck> <hands>Htr. Bracers +1</hands> <back>Libeccio Mantle</back> <waist>Scout's Belt</waist> <legs>Desultor Tassets</legs> <feet>Sct. Socks +2</feet> </set> <set name="Sidewinder" baseset="WS Base" /> <set name="Arching Arrow" baseset="WS Base" /> <set name="Empyreal Arrow" baseset="WS Base" /> <set name="Refulgent Arrow" baseset="WS Base" /> <set name="Jishnu's Radiance"> <head>Aias Bonnet</head> <neck>Flame Gorget</neck> <lear>Flame Earring</lear> <rear>Clearview Earring</rear> <body>Loki's Kaftan</body> <hands>Syl. Glvltte. +2</hands> <lring>Rajas Ring</lring> <rring>Airy Ring</rring> <back>Cuchulain's Mantle</back> <waist>Flame Belt</waist> <legs>Byakko's Haidate</legs> <feet>Scout's Socks</feet> </set> <set name="Apex Arrow"> <head>Oce. Headpiece +1</head> <neck>Flame Gorget</neck> <rear>Flame Pearl</rear> <lear>Moonshade Earring</lear> <body>Sylvan Caban +2</body> <hands>Syl. Glvltte. +2</hands> <rring>Stormsoul Ring</rring> <lring>Pyrosoul Ring</lring> <back>Sylvan Chlamys</back> <waist>Light Gorget</waist> <legs>Ambusher's Hose</legs> <feet>Sylvan Bottln. +2</feet> </set> <set name="Coronach"> <head>Thaumas Hat</head> <neck>Moepapa Medal</neck> <lear>Flame Pearl</lear> <rear>Vulcan's Pearl</rear> <body>Khepri Jacket</body> <hands>Thaumas Gloves</hands> <lring>Pyrosoul Ring</lring> <rring>Rajas Ring</rring> <back>Libeccio Mantle</back> <waist>Pipilaka Belt</waist> <legs>Thaumas Kecks</legs> <feet>Thaumas Nails</feet> </set> <set name="Last Stand"> <head>Thaumas Hat</head> <neck>Flame Gorget</neck> <rear>Sylvan Earring</rear> <lear>Moonshade Earring</lear> <body>Khepri Jacket</body> <hands>Thaumas Gloves</hands> <rring>Stormsoul Ring</rring> <lring>Stormsoul Ring</lring> <back>Sylvan Chlamys</back> <waist>Light Belt</waist> <legs>Thaumas Kecks</legs> <feet>Thaumas Nails</feet> </set> <set name="Wildfire"> <head>Thaumas Hat</head> <neck>Stoicheion Medal</neck> <lear>Hecate's Earring</lear> <rear>Novio Earring</rear> <body>Khepri Jacket</body> <hands>Thaumas Gloves</hands> <lring>Stormsoul Ring</lring> <rring>Stormsoul Ring</rring> <back>Forban Cape</back> <waist>Sveltesse Gouriz</waist> <legs>Thaumas Kecks</legs> <feet>Thaumas Nails</feet> </set> <set name="Slug Shot" baseset="WS Base" /> <set name="Blast Shot" baseset="WS Base" /> <set name="Detonator" baseset="WS Base" /> <set name="Trueflight" baseset="WS Base" /> <set name="Numbing Shot" baseset="WS Base" /> <set name="WS Base"> <head>Sylvan Gapette +2</head> <neck>Moepapa Medal</neck> <lear>Volley Earring</lear> <rear>Vulcan's Pearl</rear> <body>Khepri Jacket</body> <hands>Syl. Glvltte. +2</hands> <lring>Rajas Ring</lring> <rring>Pyrosoul Ring</rring> <back>Sylvan Chlamys</back> <waist>Scout's Belt</waist> <legs>Thaumas Kecks</legs> <feet>Sct. Socks +2</feet> </set> </group> </sets> <rules> <if mainjob="RNG"> <!-- RULES FOR RNG --> <if spell="Barbed Crescent"> <!-- dummy spell to check whether the $WTYpe variable is appropriate --> <cancelspell /> <!--<command>input /echo Barbed Crescent interrupt</command>--> <if EquipRange="Annihilator|Armageddon"> <command>sc var set WType Gun</command> <command>input /echo GUN TYPE SET</command> </if> <elseif EquipRange="Vision Bow"> <command>sc var set WType Bow</command> <command>input /echo BOW TYPE SET</command> </elseif> <else> <command>sc var set WType Xbow</command> <command>input /echo XBOW TYPE SET</command> </else> <return /> </if> <command when="engaged|idle|aftercast|resting">Dancing Chains</command> <if spell="Dancing Chains"> <!-- all variables check/recheck here--> <!--<command>input /echo *Dancing chains interrupt*</command>--> <cancelspell /> <if mode="AND" notBuffActive="Barrage" advanced='"$Barrage"=="Barrage"'> <command>sc var set Barrage Normal</command> </if> <equip set="Idle"/> <return /> </if> <!-- General ranged attack rule --> <if spell="ranged"> <castdelay delay=".1"/> <!-- in case of area lag, this delay is needed. For no lag area, this delay can be close to 0--> <equip when="precast" set="RapidSnap"/> <command when="precast">input /echo RapidSnap set</command> <midcastdelay delay=".7"/> <!--how long after initating ranged attack before switching to stp/-enmity gear?--> <equip when="midcast" set="Shooting $WType $Barrage"/> <command when="midcast">input /echo $WType $Barrage shooting set</command> <aftercastdelay delay="3" /> <!-- how long since intiating ranged attack you will swap back the idle gear--> <!--<equip when="after" set="Idle $WType"/>--> </if> <!-- Bounty Shot rule --> <if spell="Bounty Shot"> <command>input /echo Bounty Shot, locking hands to Sylvan Glovelettes +2</command> <equip> <hands lock="yes">Syl. Glvltte. +2</hands> </equip> </if> <!-- Barrage Rule --> <if spell="Barrage"> <!--<command>input /echo Activating Barrage, set barrage var to Barrage</command>--> <command>sc var set Barrage Barrage</command> <!-- Set the barrage ammo appropriately, this could be further improvise --> </if> <!-- Sharpshot Rule --> <if spell="Sharpshot"> <command>input /echo Activating Sharpshot, swapping to Hunter's Braccae</command> <equip when="precast"> <legs>Hunter's Braccae</legs> </equip> </if> <if spell="Velocity Shot"> <equip when="precast"> <body>Sylvan Caban +2</body> </equip> </if> <if spell="Eagle Eye Shot"> <equip when="precast" set="Coronach" /> </if> <!-- Abilities: Weaponskills --> <if type="WeaponSkill"> <castdelay delay="0.05" /> <if Spell="Sidewinder|Arching Arrow|Empyreal Arrow|Refulgent Arrow|Jishnu*|Apex Arrow"> <command>input /echo WS : %Spell, Changing to %Spell setup</command> <equip when="precast" set="%Spell" /> </if> <elseif Spell="Slug shot|Blast Shot|Detonator|Trueflight|Numbing Shot|Coronach|Last Stand|Wildfire"> <command>input /echo WS : %Spell, Changing to %Spell setup</command> <equip when="precast" set="%Spell" /> </elseif> <else> <command>input /echo random WS, setting to WS base set</command> <equip when="precast" set="WS Base" /> </else> <aftercastdelay delay=".5" /> </if> </if> <!--main job RNG rules ends here--> </rules> </spellcast>
Can you host that at Pastebin, Dropbox, or Guildwork please?
I'll make a Pastebin account sure^^
Quoting myself from the Things broken by 12/12 update thread,
A week later and still annoying the crap out of me, I stumbled across a fix.Just wanted to echo some other concerns; when casting cure for example my FPS drops to shit (like 29.x to 13 FPS). If I keep hitting my macro to cure I can lock myself in ~15 FPS until I stop.
I use Mote's SCH SC along with the include (http://pastebin.com/u/Motenten). No FPS issues if I spam my macro with spellcast unloaded.
Macro#1 = /ma "Cure III" <me>
Macro#2 = /console input //c3
Macro#1 drops my FPS to ~15. FPS stays locked around 15 until the pre>mid>aftercast cycle ends.
Macro#2 no lag or FPS drops.
What makes Macro#1 cause lag over Macro#2? Doesn't make sense to me ~_~
(I meant to post this in the SpellCast help thread - my bad!)
No clue... anyone else try this?
I have had this issue with pretty much every single one of motentens XMLs before and after update.
Confirming this. Although his new SCH one runs extremely smoothly.
I was running a version if his WHM one last night (probably old) and was lagging so badly that my cure wouldn't even fire who I was targetting if I tabbed off of them too quickly.
I think his XMLs are just so complex they take too long to parse completely. He said he simplified his SCH one with the last update and I've had 0 issues with it.
I'm having this happen to me as well on the old WHM v2. I keep mistargeting cures on my mule because of the weird lag spike. It's pretty severe and this wasn't happening before the update. It's a very noticeable ~1 sec freeze whenever I execute my macro which is: /ma "Cure III" <stpc>
I'll try the fix Heretic suggested above.
Edit: I should have just tested before posting. That did the trick. Pretty freakin weird though. To see the spike more blatantly, I do the macros while auto-running.
/ma "Cure III" <stpc> ...this causes my whole screen to freeze for ~1 sec and my char jumps into motion after.
/console input //c3 <stpc> ... this is totally fine