White Mage

Formatted for SpellCast 2.30.
Features include:

  • Variable for controlling idle set
  • Variable for controlling Herald’s Gaiters
  • Light Obi controls (without AutoExec)
  • Automatic strategem use (with availability controls) *Requires the use of outside scritps if macros use or
  • Strategem changes depending on which Arts are active, eliminating the need for multiple macros
  • Light Arts activation if strategem is used
  • HP set control for Devotion (requires easy game macro setup)
  • Stoneskin canceling depending on Celerity status
  • Haste reminder (requires AddToChat plugin, only activates on self-cast)
  • Automatic Afflatus activation for spells
  • Body equip delay in resting action to maximize MP recovery

There are some things other WHMs may do that I will not. I refuse to lower my HP in any situation on WHM, so there is no medicine ring support.

If I melee, it’s for shits and giggles so there are no melee rules.

As awesome as Sublimation can be, idling in HP gear to increase Sublimation return could ultimately gimp cure efficiency. Not worth the trade-off to me.

There are no rules to tier down cures based on MP; in the 6 years I’ve been playing this job, I’ve learned the mp requirements for spells and know my thresholds. I also do not block out Cure IV. I know it’s the worst spell hate-wise, but sometimes you need it.

The only target correction is for Afflatus: Solace when used before Sacrifice, because all my macros are or and there’s no good way to handle that with spellcast. This is also why I don’t idle in a PDT set; a lot of the time I’ll use to cast a spell then hit another macro and have the sub-target arrow sitting on the next spell target while the current spell finishes. If I changed gear on every single cast this would cause a torrent of “unable to perform that action…” errors which would drive me insane.

**Reraise script not working for some reason, best to eliminate that changespell for now. Also note casting Raise 3 on someone under AutoStrat rules puts Waterga V >> Deadpersonsname into chat instead of Raise III >> Deadpersonsname. Researching a workaround for this.

Open Unformatted Code In New Window

<?xml version="1.0"?>
<spellcast>
	<config
		Debug="true"
	/>
	<variables clear="yes">
		<!-- Defines which set should be equipped in aftercast (in-game macro conrolled) -->
		<var name="Standing">Enmity</var>
		<!-- What to wear on not-Lightsday -->
		<var name="Belt">Pythia Sash +1</var>
		<!-- Are we running around or mostly stationary? (in-game macro controlled) -->
		<var name="Shoes">Herald's Gaiters</var>
		<!-- Auto-Strategem handling -->
		<var name="StratCount">2</var>
		<!-- On/Off switch for auto-strategems -->
		<var name="AutoStrat">1</var>
		<!-- G15 tank party coverage setup - can remove -->
		<var name="tank1" />
		<var name="tank2" />
	</variables>
	<sets>
		<group name="WHM">
			<!-- As taru, I -never- wear anything on WHM that lowers my HP. This set has
			enough MND to cap stoneskin. Mainly used for longer fights where enmity
			buildup can be a problem. With Pythia Sash +1 and Blessed Pumps +1, this set is
			Enmity -50 (capped). -->
			<set name="Enmity">
				<main>Surya's Staff</main>
				<sub>Staff Strap</sub>
				<ammo>White Tathlum</ammo>
				<head>Mirror Tiara</head>
				<neck>Beguiling Collar</neck>
				<lear>Novia Earring</lear>
				<rear>Roundel Earring</rear>
				<body>Aristocrat's Coat</body>
				<hands>Marduk's Dastanas</hands>
				<lring>Tamas Ring</lring>
				<rring>Trooper's Ring</rring>
				<back>Errant Cape</back>
				<waist>$Belt</waist>
				<legs>Bls. Trousers +1</legs>
				<feet>$Shoes</feet>
			</set>
			<!-- This set is for Dynamis/Limbus/Einherjar where double dark weather wreaks
			havok on cures. Also used for short fights where enmity won't factor as much
			and maximizing MP efficiency is crucial. 47% cure potency, +48 MND, and still
			maintains Enmity -31. Also Cure V/VI set. -->
			<set name="MaxMND" BaseSet="Enmity">
				<sub>Raptor Strap +1</sub>
				<head>Selenian Cap</head>
				<neck>Faith Torque</neck>
				<hands>Blessed Mitts +1</hands>
				<rring>Star Ring</rring>
				<back>Prism Cape</back>
				<feet>Blessed Pumps +1</feet>
			</set>
			<!-- For Devotion, 1504 HP -> 376 Devotion -->
			<set name="MaxHP" BaseSet="Enmity">
				<main>Rsv.Cpt. Mace</main>
				<sub>Ptr.Prt. Shield</sub>
				<head>Walahra Turban</head>
				<neck>Cougar Pendant</neck>
				<lear>Morukaka Earring</lear>
				<rear>Cassie Earring</rear>
				<body>Marduk's Jubbah</body>
				<hands>Creek F Mitts</hands>
				<rring>Bomb Queen Ring</rring>
				<back>Gigant Mantle</back>
				<waist>Steppe Sash</waist>
				<legs>Oracle's Braconi</legs>
				<feet>Creek F Clomps</feet>
			</set>
			<!-- For reraise, protect(ra), and shell(ra), where recast values don't particularly
			matter -->
			<set name="FastCast" BaseSet="Enmity">
				<main>Seveneyes</main>
				<sub>Muse Tariqah</sub>
				<head>Selenian Cap</head>
				<lear>Loquac. Earring</lear>
				<body>Marduk's Jubbah</body>
				<feet>Rostrum Pumps</feet>
			</set>
			<!-- For haste and raises -->
			<set name="Recast" BaseSet="FastCast">
				<head>Walahra Turban</head>
				<waist>Swift Belt</waist>
			</set>
			<set name="Bar">
				<body>Blessed Briault +1</body>
				<legs>Cleric's Pantaln.</legs>
			</set>
			<!-- Divine skill, M.acc, Haste -->
			<set name="Banish" BaseSet="Enmity">
				<main>Neptune's Staff</main>
				<sub>Light Grip</sub>
				<rear>Sapphire Earring</rear>
				<body>Augur's Jaseran</body>
				<hands>Nashira Gages</hands>
				<rring>Omega Ring</rring>
				<legs>Nashira Seraweels</legs>
				<feet>Nashira Crackows</feet>
			</set>
			<set name="Repose" BaseSet="Banish">
				<main>Apollo's Staff</main>
			</set>
			<!-- hMP +41, can't currently get very much better. (I know, need Goli feet,
			Legion Scutum, and new craftable body, but I said "very much better" not "zomg
			best hMP set evar!")-->
			<set name="Resting" BaseSet="Enmity">
				<main>Pluto's Staff</main>
				<head>Mirror Tiara</head>
				<neck>Eidolon Pendant</neck>
				<lear>Relaxing Earring</lear>
				<rear>Antivenom Earring</rear>
				<!-- Removed for higher efficiency resting -->
				<!--<body>Oracle's Robe</body>-->
				<hands>Oracle's Gloves</hands>
				<lring>Star Ring</lring>
				<rring>Star Ring</rring>
				<back>Felicitas Cape</back>
				<waist>Austerity Belt</waist>
				<legs>Oracle's Braconi</legs>
				<feet>Oracle's Pigaches</feet>
			</set>
		</group>
	</sets>
	<rules>
		<if spell="autoset">
			<equip when="idle" set="$Standing" />
			<equip when="resting" set="Resting" />
			<command when="resting">wait 15;input /equip body "Oracle's Robe"</command>			
		</if>
		<if Type="JobAbility">
			<if SubJob="SCH">
				<!-- StratCount variable tells how many charges are available to use. This rule checks
				the variable; if 0 are available it cancels the action, if 1 or more are available it
				decreases the availability and then increases it again in 2 minutes. -->
				<if Spell="Accession|Manifestation|Celerity|Alacrity|Penury|Parsimony">
					<defaulttarget target="&lt;me&gt;" />
					<if Advanced='"$StratCount"="0"'>
						<cancelspell />
						<return />
					</if>
					<else>
						<command>spellcast var dec StratCount;wait 120;spellcast var inc StratCount</command>
					</else>
				</if>
				<!-- Change Light Arts strategems to Dark Arts equivalents if Dark Arts is active -->
				<if BuffActive="Dark Arts|Addendum: Black">
					<if Spell="Celerity">
						<changespell Spell="Alacrity" />
					</if>
					<elseif Spell="Penury">
						<changespell Spell="Parsimony" />
					</elseif>
					<elseif Spell="Accession">
						<changespell Spell="Manifestation" />
					</elseif>
				</if>
				<else>
					<!-- Activate Light Arts if not already active when strategems macros are
					used -->
					<if Spell="Celerity" notBuffActive="Light Arts">
						<changespell Spell="Light Arts" />
						<command when="aftercast">Celerity</command>
					</if>
					<elseif Spell="Penury" notBuffActive="Light Arts">
						<changespell Spell="Light Arts" />
						<command when="aftercast">Penury</command>
					</elseif>
					<elseif Spell="Accession" notBuffActive="Light Arts">
						<changespell Spell="Light Arts" />
						<command when="aftercast">Accession</command>
					</elseif>
					<!-- Only reason to use Dark Arts is for access to black magic, so activate
					Addendum also -->
					<elseif Spell="Dark Arts">
						<command when="aftercast">Addendum: Black</command>
					</elseif>
				</else>
			</if>
			<if Spell="Devotion">
				<!-- In-game macro is simple:
				/ma "Cure V" <me>
				/wait 4
				/ja "Devotion" <stpt> 
				Aftercast delay is to prevent HP loss from gear swapping too soon...rare,
				but happens! -->
				<aftercastdelay delay="2" />
				<equip when="aftercast" set="$Standing" />
			</if>
		</if>
		<elseif Type="WhiteMagic">
			<!-- Probably could have used AutoExec to handle day rule but this is unintrusive
			and never fails me -->
			<if Advanced='"%WeatherElement" = "Light" OR "%DayElement" = "Light"'>
				<var cmd="set Belt Korin Obi" />
			</if>
			<else>
				<var cmd="set Belt Pythia Sash +1" />
			</else>
			<if Spell="Stoneskin">
				<!-- Changes cancel delay if Celerity is active. No need for special gear,
				both idle sets have plenty of MND for capped stoneskin (taru) -->
				<if notBuffActive="Celerity">
					<midcastdelay delay="4" />
					<command when="MidCast">cancel 37</command>
				</if>
				<else>
					<midcastdelay delay="2" />
					<command when="MidCast">cancel 37</command>
				</else>
			</if>
			<elseif Spell="Cure V*">
				<!-- Usually only Cure 5ing myself for Devotion, so put on MaxHP gear and
				stop parsing. -->
				<if SpellTargetType="Self" HPGT="600">
					<equip when="precast" set="MaxHP" />
					<return />
				</if>
				<else>
					<!-- If a strategem charge is available and I'm not conserving strategems,
					use Penury to reduce MP cost. Changespell triggers a script since spellcast
					doesn't like <stal>. -->
					<if SubJob="SCH" Advanced='"$AutoStrat"="1" AND "$StratCount"&gt;"0"'>
						<if Advanced='"$StratCount"&gt;"0"'>
							<if Spell="Cure V">
								<changespell Spell="Waterga V" />
							</if>
							<elseif Spell="Cure VI">
								<changespell Spell="Aeroga V"/>
							</elseif>
						</if>
					</if>
					<!-- Always swap to MaxMND set for Cure V/VI, then return to current idle
					set -->
					<equip when="precast" set="MaxMND" />
					<equip when="aftercast" set="$Standing" />
				</else>
			</elseif>
			<!-- For the love of god, max -Enmity for Curagas... -->
			<elseif Spell="Cura*">
				<equip when="precast" set="Enmity">
					<feet>Blessed Pumps +1</feet>
				</equip>
				<equip when="aftercast" set="$Standing" />
			</elseif>
			<elseif Spell="Regen*">
				<equip when="precast">
					<body>Cleric's Briault</body>
				</equip>
				<equip when="aftercast">
					<body>Aristocrat's Coat</body>
				</equip>
			</elseif>
			<elseif Spell="Barstonra|Barwatera|Baraera|Barfira|Barblizzara|Barthundra">
				<equip when="precast" set="Bar" />
				<castdelay delay=".2" />
				<equip when="aftercast" set="$Standing" />
			</elseif>
			<elseif Spell="Haste">
				<equip when="precast" set="Recast" />
				<equip when="aftercast" set="$Standing" />
				<!-- Only notify when Haste is cast on myself, otherwise chatlog spam is
				excessive. I use <command></command> here instead of <addtochat>
				</addtochat> because I needed to utilize aftercast without a delay.
				Requires AddToChat plugin, available here:
				http://windower.net/plugins/AddToChat.dll -->
				<if Advanced='"%SpellTargetName" = "Giacorleone"'>
					<command>pause 170;input //addtochat 121 **************************************** [: Haste :] ****************************************</command>
				</if>
			</elseif>
			<elseif Spell="Reraise*|Protect*|Shell*">
				<if Spell="Protectra*|Shellra">
					<!-- Damn people always trying to stand as far away as possible... -->
					<command>input /p %Spell  » Stay put! «</command>
				</if>
				<!-- If not conserving strats and one is available, use Penury to reduce MP cost -->
				<elseif Spell="Reraise III" SubJob="SCH" Advanced='"$AutoStrat"="1" AND "$StratCount"&gt;"0"'>
					<changespell Spell="Stonega V" />
				</elseif>
				<equip when="precast" set="FastCast" />
				<equip when="aftercast" set="$Standing" />
			</elseif>
			<elseif Spell="Raise*">
				<!-- If weakened and a strategem charge is available, use Celerity to
				reduce recast timer. Otherwise, use Penury to reduce MP consumption. -->
				<if Spell="Raise III" SubJob="SCH" Advanced='"$AutoStrat"="1" AND "$StratCount"&gt;"0"'>
					<if BuffActive="weakness">
						<changespell Spell="Firaga V" />
					</if>
					<else>
						<changespell Spell="Blizzaga V" />
					</else>
				</if>
				<equip when="precast" set="Recast" />
				<equip when="aftercast" set="$Standing" />
				<!-- To avoid wasting time/strategems/mp, announce raises in situations
				where multiple raisers may be attempting to get one dead person -->
				<if Area="Dynamis-*|Hazhalm*">
					<command when="precast">input /p %Spell » %SpellTarget</command>
				</if>
			</elseif>
			<!--<elseif Spell="Sacrifice" notBuffActive="Afflatus Solace">
				<castdelay delay="2" />
				<command when="precast">input /ja "Afflatus Solace" &lt;me&gt;</command>
			</elseif>-->
			<elseif Spell="Esuna" notBuffActive="Afflatus Misery">
				<changespell Spell="Afflatus Misery" />
				<command when="aftercast">pause 1;input /ma "Esuna" &lt;me&gt;</command>
			</elseif>
			<elseif Spell="Banish*|Holy">
				<equip when="precast" set="Banish" />
			</elseif>
			<elseif Spell="Repose">
				<equip when="precast" set="Repose" />
			</elseif>
		</elseif>
		<!-- Fake spell for Penury/Reraise 3 -->
		<elseif Spell="Stonega V">
			<cancelspell />
			<command>exec gia/whm/spells/penrr.ffxi</command>
		</elseif>
		<!-- Fake spell for Penury/Cure V -->
		<elseif Spell="Waterga V">
			<cancelspell />
			<command>exec gia/whm/spells/penc5.ffxi</command>
		</elseif>
		<!-- Fake spell for Penury/Cure VI -->
		<elseif Spell="Aeroga V">
			<cancelspell />
			<command>exec gia/whm/spells/penc6.ffxi</command>
		</elseif>
		<!-- Fake spell for Celerity/Raise 3 -->
		<elseif Spell="Firaga V">
			<cancelspell />
			<command>exec gia/whm/spells/celr3.ffxi</command>
		</elseif>
		<!-- Fake spell for Penury/Raise 3 -->
		<elseif Spell="Blizzaga V">
			<cancelspell />
			<command>exec gia/whm/spells/penr3.ffxi</command>
		</elseif>
	</rules>
</spellcast>