IneptVagrant's BLM Nuke Tier Reduction

DISCLAIMER: this script is not tested on blm, post in Development thread if you have issues. Requires SC v2.3 or higher

This is based on Radagast's Tier Reduction. I've extended the capabilities.

The Primary difference, is adjusting Tier for Recast timers

The SCH version is available here

Forum Thread/Developement

Other work

Commands

General usage -- just cast a T5 ga spell.
Ex. /ma "Stonega V" <t>
will cast your highest Tier earth spell (SINGLE TARGET of course).

Scales automatically with your level, and available MP

//nuket #
#=[1-5], restricts the maximum allowed Tier to cast (default: 5)
Ex.  //nuket 2 -- will only cast Tier 2, and Tier 1 magic
Ex. //nuket 5 -- will cast any Tier, including AM2

//nukeq
Toggles checking MP and Recast requirements (default: true)

Set Up

You will need Spellcast, and Autoexec.

Autoexec does not require any setup.

Setup for Spellcast

1) To your <variables> section add

		<!-- Review gear you complete a Nuke in, add Haste and 1/2 of Fastcast -->
		<!-- This value is typically 0, as you either gear for more dmg, or for more MAcc, and not for haste when Nukeing-->
		<var name="NukeRecastBase">0.0</var>
		<!-- set equal to your total fastcast gear in precast -->
		<var name="NukeFastCastBase">0.0</var>
 
		<!-- set to name of spell if accquired, set to 0 otherwise -->
		<var name="NukeAM2Ice">0</var>
		<var name="NukeAM2Thunder">0</var>
		<var name="NukeAM2Wind">0</var>
		<var name="NukeAM2Fire">0</var>
		<var name="NukeAM2Earth">0</var>
		<var name="NukeAM2Water">0</var>
<xi:include href="blmnukerecast.xml" xpointer="/includes/include[@name='vars']/*" />

1.B)Set the AM2 vars in Spellcast to the Spell's name if you have them, otherwise set it to zero.

2) To your <rules> section near the end add

<xi:include href="blmnukerecast.xml" xpointer="/includes/include[@name='rules']/*" />

3) create the xml file “blmnukerecast.xml” with contents below

<?xml version="1.0" encoding="utf-8"?>
<includes>
	<include name="vars">
 
		<!-- Don't Touch -->
		<var name="NukeReqs">true</var>
		<var name="NukeTierMax">5</var>
		<var name="NukeFirstRun">true</var>
		<var name="NukeMyLevel">75</var>
		<var name="NukeIce">Blizzard</var>
		<var name="NukeLevel1Ice">17</var>
		<var name="NukeLevel2Ice">42</var>
		<var name="NukeLevel3Ice">64</var>
		<var name="NukeLevel4Ice">74</var>
		<var name="NukeThunder">Thunder</var>
		<var name="NukeLevel1Thunder">21</var>
		<var name="NukeLevel2Thunder">46</var>
		<var name="NukeLevel3Thunder">66</var>
		<var name="NukeLevel4Thunder">75</var>
		<var name="NukeWind">Aero</var>
		<var name="NukeLevel1Wind">9</var>
		<var name="NukeLevel2Wind">34</var>
		<var name="NukeLevel3Wind">59</var>
		<var name="NukeLevel4Wind">72</var>
		<var name="NukeFire">Fire</var>
		<var name="NukeLevel1Fire">13</var>
		<var name="NukeLevel2Fire">38</var>
		<var name="NukeLevel3Fire">62</var>
		<var name="NukeLevel4Fire">73</var>
		<var name="NukeEarth">Stone</var>
		<var name="NukeLevel1Earth">1</var>
		<var name="NukeLevel2Earth">26</var>
		<var name="NukeLevel3Earth">51</var>
		<var name="NukeLevel4Earth">68</var>
		<var name="NukeWater">Water</var>
		<var name="NukeLevel1Water">5</var>
		<var name="NukeLevel2Water">30</var>
		<var name="NukeLevel3Water">55</var>
		<var name="NukeLevel4Water">70</var>
	</include>
	<include name="rules">
		<if spell="*ga V">
			<!-- Select Target ??? than return, wait for chosentarget -->
			<if spelltargetraw="&lt;st*">
				<cancelspell />
				<return />
			</if>
			<!-- first time run since reload, create aliases -->
			<if advanced='"$NukeFirstRun"=="true"'>
				<cmd>alias nukeT ae regonceq time_* input /echo !!-- Setting Nuke Tier Maximum to Tier $NukeTierMax --!!;sc var set NukeTierMax</cmd>
				<cmd>alias onnukeq sc var set NukeReqs true;confirmnukeq;alias nukeq offnukeq</cmd>
				<cmd>alias offnukeq sc var set NukeReqs false;confirmnukeq;alias nukeq onnukeq</cmd>
				<cmd>alias confirmnukeq ae regonceq time_* input /echo !!-- Setting Nuke Requirements to $NukeReqs --!!</cmd>
				<cmd>alias nukeq offnukeq</cmd>
				<var cmd="set NukeFirstRun false" />
			</if>
 
			<!-- confirm Level Req -->
			<if advanced='"$NukeTierMax"=="5"'>
				<var cmd="set NukeMyLevel $NukeLevel4Thunder" /></if>
			<elseif advanced='"$NukeTierMax"=="4"'>
				<var cmd="set NukeMyLevel $NukeLevel4Thunder" /></elseif>
			<elseif advanced='"$NukeTierMax"=="3"'>
				<var cmd="set NukeMyLevel $NukeLevel3Thunder" /></elseif>
			<elseif advanced='"$NukeTierMax"=="2"'>
				<var cmd="set NukeMyLevel $NukeLevel2Thunder" /></elseif>
			<elseif advanced='"$NukeTierMax"=="1"'>
				<var cmd="set NukeMyLevel $NukeLevel1Thunder" /></elseif>
			<else><action type="addtochat">!-- Tier Undefined, assumeing Tier 5 --!</action>
				<var cmd="set NukeMyLevel 75" /></else>
 
			<if mlvllt="$NukeMyLevel"><var cmd="set NukeMyLevel %MainJobLVL" /></if>
 
			<if advanced='"$NukeMyLevel"=="75"'>
				<if advanced='"$NukeAM2%spellelement"!="0"'>
					<action type="changespell" spell="$NukeAM2%spellelement" /></if>
				<else><action type="changespell" spell="$Nuke%SpellElement IV" /></else>
			</if>
 
			<else>
				<if     advanced='$NukeMyLevel &lt; (int)$NukeLevel1%SpellElement'><action type="cancelspell"/><action type="addtochat">No spell Available!!!</action><action type="return" /></if>
				<elseif advanced='$NukeMyLevel &lt; (int)$NukeLevel2%SpellElement'><action type="changespell" spell="$Nuke%SpellElement"/></elseif>
				<elseif advanced='$NukeMyLevel &lt; (int)$NukeLevel3%SpellElement'><action type="changespell" spell="$Nuke%SpellElement II"/></elseif>
				<elseif advanced='$NukeMyLevel &lt; (int)$NukeLevel4%SpellElement'><action type="changespell" spell="$Nuke%SpellElement III"/></elseif>
				<else><action type="changespell" spell="$Nuke%SpellElement IV"/></else>
			</else>
 
			<!-- check cast conditions, possible problem if you have any slow effects -->
			<if buffactive="Haste"><var cmd="set ishaste 15.0" /></if><else><var cmd="set ishaste 0.0" /></else>
			<if buffactive="Dark Arts|Addendum: Black"><var cmd='set myMPCost "\%MPCost * 0.9"' /><var cmd="set isArts 10.0" /></if><elseif buffactive="Light Arts|Addendum: White"><var cmd='set myMPCost "\%MPCost * 1.2"' /><var cmd="set isArts -20.0" /></elseif><else><var cmd='set myMPCost "\%MPCost"' /><var cmd="set isArts 0.0" /></else>
			<if buffactive="Alacrity"><var cmd="set isAlacrity 50.0" /></if><else><var cmd="set isAlacrity 0.0" /></else>
			<if buffactive="Parsimony"><var cmd='set myMPCost "\%MPCost * 0.5"' /></if>
			<if subjob="RDM"><if sLvlLt="15"><var cmd="set isRDM 0.0" /></if><elseif sLvlLt="35"><var cmd="set isRDM 5.0" /></elseif><else><var cmd="set isRDM 7.5" /></else></if><else><var cmd="set isRDM 0.0" /></else>
			<if buffactive="Weakened"><var cmd="set isWeak -100.0" /></if><else><var cmd="set isWeak 0.0" /></else>
 
			<if advanced='"$NukeReqs"=="true"'>
 
				<!-- Confirm Distance -->
				<if spelltargettype="MONSTER|NPC" spelltargetdistancegt="21.5">
					<action type="addtochat">!!-- Target Distance %spelltargetDistance --!!</action>
					<action type="return" />
					<action type="cancelspell" />
				</if>
				<elseif spelltargettype="NONE" targettype="MONSTER|NPC" Targetdistancegt="21.5">
					<action type="addtochat">!!-- Target Distance %spelltargetDistance --!!</action>
					<action type="return" />
					<action type="cancelspell" />
				</if>
 
 
				<!-- Confirm MP Req and Recast -->
 
				<if spell ="$NukeAM2%spellelement">
					<var cmd="set myTier 5" />
					<if mode="OR" mplt = "$myMPCost" advanced='"$Nukerecast$myTier%spellelement"=="NotReady"'>
						<action type="changespell" spell="$Nuke%SpellElement IV" /></if></if>
				<if spell ="$Nuke%SpellElement IV">
					<var cmd="set myTier 4" />
					<if mode="OR" mplt = "$myMPCost" advanced='"$Nukerecast$myTier%spellelement"=="NotReady"'>
						<action type="changespell" spell="$Nuke%SpellElement III" /></if></if>
				<if spell ="$Nuke%SpellElement III">
					<var cmd="set myTier 3" />
					<if mode="OR" mplt = "$myMPCost" advanced='"$Nukerecast$myTier%spellelement"=="NotReady"'>
						<action type="changespell" spell="$Nuke%SpellElement II" /></if></if>
				<if spell ="$Nuke%SpellElement II">
					<var cmd="set myTier 2" />
					<if mode="OR" mplt = "$myMPCost" advanced='"$Nukerecast$myTier%spellelement"=="NotReady"'>
						<action type="changespell" spell="$Nuke%SpellElement" /></if></if>
				<if spell ="$Nuke%SpellElement">
					<var cmd="set myTier 1" />
					<if mplt = "$myMPCost">
						<action type="cancelspell"/><action type="addtochat">!!!---   No MP   ---!!!</action><action type="return" /></if>
					<if advanced='"$Nukerecast$myTier%spellelement"=="NotReady"'>
						<action type="cancelspell"/><action type="addtochat">!!!---   Recast not ready   ---!!!</action><action type="return"/></if></if>
 
			</if>
 
			<!-- Create Recast Wait period -->
			<!-- how much haste -->
			<if advanced='$isHaste + $isArts + $isAlacrity + $isRDM + $isWeak + $NukeRecastbase &gt; 50.0'>
				<var cmd="set myFast 50.0" />
			</if>
			<elseif advanced='$isHaste + $isArts + $isAlacrity + $isRDM + $isWeak + $NukeRecastBase &lt; -100.0'>
				<var cmd="set myFast -100.0" />
			</elseif>
			<else>
				<var cmd="setcalc myFast $isHaste + $isArts + $isAlacrity + $isRDM + $isWeak + $NukeRecastBase" />
			</else>
 
			<var cmd="setcalc myRecast %recast * ((100.0 - ($myFast)) / 100.0)" />
 
			<!-- Create Casttime Wait period -->
			<!-- how much fastcast -->
			<if subjob="RDM"><if sLvlLt="15"><var cmd="set isRDM 0.0" /></if><elseif sLvlLt="35"><var cmd="set isRDM 10.0" /></elseif><else><var cmd="set isRDM 15.0" /></else></if><else><var cmd="set isRDM 0.0" /></else>
			<if advanced='$isAlacrity + $isArts +  + $isRDM + $NukeFastCastbase &gt; 50.0'>
				<var cmd="set myFast 50.0" />
			</if>
			<elseif advanced='$isAlacrity + $isArts + $isRDM + $NukeFastCastbase &lt; -100.0'>
				<var cmd="set myFast -100.0" />
			</elseif>
			<else>
				<var cmd="setcalc myFast $isAlacrity + $isArts + $isRDM + $NukeFastCastbase" />
			</else>
 
			<var cmd="setcalc myCastTime %casttime * ((100.0 - ($myFast)) / 100.0)" />
 
			<var cmd="setcalc myTotalTime $myCastTime + $myRecast" />
 
			<cmd when="midcast">sc var set Nukerecast$myTier%spellelement NotReady</cmd>
 
			<var cmd="setcalc myCastTime $myCastTime + 1.0" />
 
			<cmd when="midcast">wait $myCastTime;
								input /echo $myRecast :: Recast;
								input /recast "%spell"</cmd>
 
			<cmd when="midcast">wait $myTotalTime;
								sc var set Nukerecast$myTier%spellelement Ready</cmd>
		</if>
	</include>
</includes>
plugins/spellcast/userxml/blm/ineptvagrant_tier.txt · Last modified: 2009/08/08 14:00 (external edit)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0