Corsair

Features:

  • Luzaf’s Ring controls (in-game macro dependent)
  • TP Lock variable for staff swaps (Quick Draw)
  • ChangeSpell to Double-Up if current roll is already active – eliminates need for macro
  • Unobtrusive lucky number reminder in AddToChat
  • Simple logic for pulls, barrage, or normal ranged attacks
  • Elemental grip and obi support

Open Unformatted Code In New Window

<?xml version="1.0"?>
<Spellcast xmlns:xi="http://www.w3.org/2001/XInclude">
	<config
		Debug="true"
	/>
	<variables>
		<!-- Luzaf Ring activation -->
		<var name="Ring">0</var>
		<!-- What % TP should prevent elemental staff swap for Quick Draw -->
		<var name="TPLock">25</var>
		<var name="FireStaff">Vulcan's Staff</var>
		<var name="IceStaff">Aquilo's Staff</var>
		<var name="WindStaff">Auster's Staff</var>
		<var name="EarthStaff">Terra's Staff</var>
		<var name="ThunderStaff">Jupiter's Staff</var>
		<var name="WaterStaff">Neptune's Staff</var>
		<var name="LightStaff">Apollo's Staff</var>
		<var name="DarkStaff">Pluto's Staff</var>
		<!-- Obis: "1" if have, "0" if don't have -->
		<var name="DarkObi">1</var>
		<var name="LightObi">1</var>
		<var name="ThunderObi">1</var>
		<var name="IceObi">1</var>
		<var name="FireObi">0</var>
		<var name="WindObi">1</var>
		<var name="WaterObi">0</var>
		<var name="EarthObi">0</var>
		<!-- Elemental Grips: "1" if have, "0" if don't have -->
		<var name="LightGrip">1</var>
		<var name="DarkGrip">1</var>
		<var name="ThunderGrip">0</var>
		<var name="IceGrip">1</var>
		<var name="FireGrip">0</var>
		<var name="WindGrip">1</var>
		<var name="WaterGrip">0</var>
		<var name="EarthGrip">1</var>
	</variables>
	<sets>
		<group name="COR" default="yes">
			<set name="Idle">
				<head>Commodore Tricorne</head>
				<neck>Faith Torque</neck>
				<lear>Novio Earring</lear>
				<rear>Ethereal Earring</rear>
				<body>Denali Jacket</body>
				<hands>Crimson Fng. Gnt.</hands>
				<lring>Sniper's Ring +1</lring>
				<rring>Blood Ring</rring>
				<back>Cuchulain's Mantle</back>
				<legs>Crimson Cuisses</legs>
				<feet>Cor. Bottes +1</feet>
			</set>
			<set name="melee">
				<head>Walahra Turban</head>
				<neck>Peacock Charm</neck>
				<lear>Brutal Earring</lear>
				<rear>Ethereal Earring</rear>
				<body>Enkidu's Harness</body>
				<hands>Aurore Gloves</hands>
				<lring>Sniper's Ring +1</lring>
				<rring>Blood Ring</rring>
				<back>Cuchulain's Mantle</back>
				<waist>Swift Belt</waist>
				<legs>Aurore Brais</legs>
				<feet>Aurore Gaiters</feet>
			</set>
			<set name="RATP" BaseSet="melee">
				<head>Zha'Go's Barbut</head>
				<neck>Faith Torque</neck>
				<lear>Vision earring</lear>
				<body>Denali Jacket</body>
				<hands>Crimson Fng. Gnt.</hands>
				<back>Amemet Mantle +1</back>
				<waist>Buccaneer's Belt</waist>
				<feet>Cor. Bottes +1</feet>
			</set>
			<set name="Slug" BaseSet="RATP">
				<ammo>Steel Bullet</ammo>
				<head>Zha'Go's Barbut</head>
				<lear>Triumph Earring</lear>
				<rear>Triumph Earring</rear>
				<lring>Behemoth Ring +1</lring>
				<rring>Behemoth Ring +1</rring>
				<legs>Comm. Culottes</legs>
			</set>
			<set name="QD" BaseSet="RATP">
				<ammo>Steel Bullet</ammo>
				<head>Cor. Tricorne +1</head>
				<neck>Uggalepih Pendant</neck>
				<lear>Novio Earring</lear>
				<rear>Moldavite Earring</rear>
				<hands>Aurore Gloves</hands>
				<lring>Insect Ring</lring>
				<rring>Omega Ring</rring>
				<waist>Scouter's Rope</waist>
				<legs>Comm. Culottes</legs>
				<back>Commander's Cape</back>
			</set>
			<set name="QDdl" BaseSet="QD">
				<rear>Sapphire Earring</rear>
				<feet>Denali Gamashes</feet>
			</set>
			<set name="MPSet">
				<main>Apollo's Staff</main>
				<sub>Light Grip</sub>
				<head>Walahra Turban</head>
				<neck>Beguiling Collar</neck>
				<lear>Loquac. Earring</lear>
				<rear>Antivenom Earring</rear>
				<body>Commodore Frac</body>
				<hands>Crimson Fng. Gnt.</hands>
				<lring>Tamas Ring</lring>
				<rring>Star Ring</rring>
				<back>Merciful Cape</back>
				<legs>Crimson Cuisses</legs>
				<feet>Cor. Bottes +1</feet>
			</set>
		</group>
	</sets>
	<rules>
		<if Spell="autoset">
			<if MLVLGT="71">
				<equip when="idle" set="Idle" />
				<equip when="engaged" set="melee" />
			</if>
			<if SubJob="WHM">
				<equip when="idle" set="MPSet" />
			</if>
		</if>
		<if SubJob="WHM">
			<equip when="aftercast" set="MPSet" />
		</if>
		<else>
			<if Status="engaged" MLVLGT="71">
				<equip when="aftercast" set="melee" />
			</if>
			<else>
				<equip when="aftercast" set="Idle" />
			</else>
		</else>

		<if Type="CorsairRoll">
			<!-- If I press a roll macro and that roll is already active, do Double-Up
			instead - removes need for "Double-Up" macro -->
			<if BuffActive="%Spell">
				<changeSpell Spell="Double-Up" />
			</if>
			<if MLVLGT="39">
				<if MLVLGT="74">
					<equip when="precast">
						<head>Commodore Tricorne</head>
					</equip>
				</if>
				<!-- Always use Luzaf's Ring for XP/Run Fast/Regen rolls -->
				<if Spell="Corsair's Roll|Bolter's Roll|Dancer's Roll">
					<equip when="precast">
						<rring>Luzaf's Ring</rring>
					</equip>
				</if>
				<else>
					<!-- Depending on which macro palette I'm on, the macro will specify
					sc var set Ring "1" or sc var set Ring "0"; 1 means use Luzaf's Ring
					for wide effect, 0 means leave it off for a more focused effect -->
					<if advanced='$Ring == 1'>
						<equip when="precast">
							<rring>Luzaf's Ring</rring>
						</equip>
					</if>
					<else>
						<if SubJob="WHM">
							<equip>
								<rring>Star Ring</rring>
							</equip>
						</if>
						<else>
							<equip>
								<rring>Blood Ring</rring>
							</equip>
						</else>
					</else>
				</else>
			</if>
			<!-- Requires AddToChat plugin, available here:
			http://windower.net/plugins/AddToChat.dll -->
			<if Spell="Magus's Roll|Choral Roll|Samurai Roll|Scholar's Roll|Caster's Roll">
				<addtochat color="121">------------------- Lucky: 2 -------------------</addtochat>
			</if>
			<elseif Spell="Healer's Roll|Monk's Roll|Drachen Roll|Gallant's Roll|Dancer's Roll|Bolter's Roll">
				<addtochat color="121">------------------- Lucky: 3 -------------------</addtochat>
			</elseif>
			<elseif Spell="Ninja Roll|Hunter's Roll|Chaos Roll|Puppet Roll|Beast Roll|Warlock's Roll">
				<addtochat color="121">------------------- Lucky: 4 -------------------</addtochat>
			</elseif>
			<elseif Spell="Corsair's Roll|Evoker's Roll|Rogue's Roll|Fighter's Roll|Wizard's Roll">
				<addtochat color="121">------------------- Lucky: 5 -------------------</addtochat>
			</elseif>
			<!-- Miniscule delay to ensure gear swaps -->
			<castdelay delay="0.2" />
		</if>
		<elseif Spell="Ranged" SpellTargetType="MONSTER|NPC">
			<!-- If target is at 100% health and there are more than 3 people in the
			party, a ranged attack is treated as a pull and inserts a /p macro (and cheap
			ammo!) -->
			<if SpellTargetHPPGT="99" advanced="%PartyCount &gt; 3">
				<equip when="precast">
					<ammo>Bullet</ammo>
				</equip>
				<command>input /p [: &lt;t&gt; :]  &lt;scall14&gt;</command>
			</if>
			<!-- If Barrage is active, switch to Corsair Bullet -->
			<elseif BuffActive="Barrage">
				<equip when="precast">
					<ammo>Corsair Bullet</ammo>
				</equip>
			</elseif>
			<!-- If not pulling, and not using Barrage, use standard damage bullets -->
			<else>
				<equip when="precast">
					<ammo>Steel Bullet</ammo>
				</equip>
			</else>
			<equip when="precast" set="RATP" />
			<if SubJob="RNG">
				<equip when="precast">
					<rear>Beater's Earring</rear>
					<waist>Gun Belt</waist>
				</equip>
			</if>
			<else>
				<equip when="precast">
					<rear>Drone Earring</rear>
				</equip>
			</else>
			<!-- Guns take a whlie to shoot and I find standard aftercast changes me to
			idle before the shot goes off; this makes sure I'm doing the shot in the
			right gear -->
			<aftercastdelay delay="4" />
		</elseif>
		<elseif Type="CorsairShot">
			<!-- If using Corsair Shot and not engaged, with TP under specified amount,
			switch to elemental staff and grip if applicable (see variables) -->
			<if notStatus="engaged" TPLT="$TPLock">
				<equip when="precast">
					<main>$%SpellElementStaff</main>
				</equip>
				<if advanced='"$%SpellElementGrip" == "1"'>
					<equip when="precast">
						<sub lock="true">%SpellElement Grip</sub>
					</equip>
				</if>
			</if>
			<if Spell="Light Shot|Dark Shot">
				<equip when="precast" set="QDdl" />
			</if>
			<else>
			<equip when="precast" set="QD" />
				<if advanced='("%SpellElement" = "%WeatherElement" OR "%SpellElement" = "%DayElement") AND "$%SpellElementObi" = "1"'>
					<if Element="Thunder">
						<equip when="precast">
							<waist lock="yes">Rairin Obi</waist>
						</equip>
					</if>
					<elseif Element="Ice">
						<equip when="precast">
							<waist lock="yes">Hyorin Obi</waist>
						</equip>
					</elseif>
					<elseif Element="Fire">
						<equip when="precast">
							<waist lock="yes">Karin Obi</waist>
						</equip>
					</elseif>
					<elseif Element="Wind">
						<equip when="precast">
							<waist lock="yes">Furin Obi</waist>
						</equip>
					</elseif>
					<elseif Element="Water">
						<equip when="precast">
							<waist lock="yes">Suirin Obi</waist>
						</equip>
					</elseif>
					<elseif Element="Earth">
						<equip when="precast">
							<waist lock="yes">Dorin Obi</waist>
						</equip>
					</elseif>
				</if>
			</else>
		</elseif>
		<elseif Type="Weaponskill">
			<equip when="precast" set="Slug" />
			<if SubJob="RNG">
				<equip when="precast">
					<rear>Beater's Earring</rear>
					<waist>Gun Belt</waist>
				</equip>
			</if>
			<else>
				<equip when="precast">
					<rear>Drone Earring</rear>
					<waist>Buccaneer's Belt</waist>
				</equip>
			</else>
			<if Spell="Leaden Salute">
				<equip when="precast">
					<neck>Soil Gorget</neck>
				</equip>
			</if>
			<elseif Spell="Detonator">
				<equip when="precast">
					<neck>Flame Gorget</neck>
				</equip>
			</elseif>
			<elseif Spell="Slug Shot">
				<equip when="precast">
					<neck>Breeze Gorget</neck>
				</equip>
			</elseif>
			<else>
			<equip when="precast">
				<neck>Faith Torque</neck>
			</equip>
			</else>
			<!-- Miniscule delay to ensure gear swaps -->
			<castdelay delay="0.2" />
		</elseif>
	</rules>
</Spellcast>