Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="utf-8"?>
- <!-- Last modified: 3/21/2012 5:11:36 PM -->
- <includes>
- <!-- Commands:
- /ma trigger99 Nyzul:start -- Initiates timer
- /ma trigger99 Nyzul:stop -- Stops timer
- ~~ Timer automatically turns itself off when outside of Nyzul Isle
- /ma update NyzulFloor -- Notify the timer that a floor has been cleared, and update values.
- Hit macro for this as soon as possible after climbing to a new floor.
- Note: These are using the new trigger system spells by default. If you don't have them
- set up, replace Trigger99 and Update with other unused spells or abilities.
- Place this include in vars:
- <xi:include href="NyzulTimer.xml" xpointer="//include[@name='NyzulTimerVars']/*" />
- Place this include in rules:
- <xi:include href="NyzulTimer.xml" xpointer="//include[@name='NyzulTimer']/*" />
- -->
- <include name="NyzulTimerVars">
- <!-- ~~~~~~~ CONFIG ~~~~~~~ -->
- <!-- Which trigger spells to use, to avoid conflicts with other code. -->
- <var name="NyzulEventTrigger">Trigger99</var>
- <var name="UpdateTrigger">Update</var>
- <!-- How many jumps you want to allow for taking. -->
- <var name="NyzulJumps">15</var>
- <!-- Time necessary to kill boss and lot spoils. -->
- <var name="NyzulBossTime">180</var>
- <!-- Delay period between notifications of your progress. -->
- <var name="NyzulNotifyDelay">45</var>
- <!-- Which floor you intend to reach. -->
- <var name="NyzulTargetFloor">100</var>
- <!-- Minimum number of jumps you need to complete before it's possible to start consider single jumps. -->
- <!-- Set to 11 for floor 100, 9 for 80, 7 for 60, 5 for 40, 2 for 20 -->
- <var name="NyzulMinJumps">11</var>
- <!-- ~~~~~~~ END CONFIG ~~~~~~~ -->
- <!-- Variables used by the script. -->
- <var name="NyzulActive">No</var>
- <var name="NyzulFloor">0</var>
- <var name="NyzulCardinalFloor">Lobby</var>
- <!-- 2.4 minutes per game hour == 144 seconds -->
- <var name="SecondsPerGameHour">144</var>
- <var name="SecondsPerGameMin">2.4</var>
- <var name="NyzulStartTime">0</var>
- <var name="NyzulEndTime">0</var>
- <var name="NyzulTimeMarker">0.0</var>
- <var name="NyzulDispEndHours">0</var>
- <var name="NyzulDispEndMins">0</var>
- <var name="NyzulTimeRemainingGameHours">0</var>
- <var name="NyzulTimeRemainingMinutes">0</var>
- <var name="NyzulTimeRemainingSeconds">0</var>
- <var name="NyzulClimbTimeRemaining">0</var>
- <var name="NyzulBaseTimeAllowedPerFloor">1</var>
- <var name="NyzulTimeAllowedPerFloor">1</var>
- <var name="NyzulTimeOnCurrentFloor">0</var>
- <var name="NyzulTimeSpentOnCurrentFloor">0</var>
- <var name="NyzulEstimatedFloors">0</var>
- <var name="NyzulMinSingleFloor">0</var>
- <var name="Time1Time">0</var>
- <var name="Time2Time">0</var>
- <var name="Time1Hours">0</var>
- <var name="Time2Hours">0</var>
- <var name="Time1Mins">0</var>
- <var name="Time2Mins">0</var>
- <var name="DiffTimeHours">0</var>
- <var name="DiffTimeMins">0</var>
- </include>
- <include name="NyzulTimer">
- <if Spell="$NyzulEventTrigger">
- <cancelspell />
- <if SpellTargetRaw="Nyzul:*">
- <if SpellTargetRaw="*:Start">
- <if advanced='"$NyzulActive"="No"'>
- <var cmd="set NyzulFloor 0" />
- <var cmd="set NyzulCardinalFloor Lobby" />
- <var cmd="set NyzulActive Yes" />
- <var cmd="set NyzulStartTime %Time" />
- <var cmd="set NyzulTimeMarker $NyzulStartTime" />
- <var cmd="setcalc NyzulEndTime $NyzulStartTime + 12.00" />
- <if advanced='$NyzulEndTime > 24.00'>
- <var cmd="setcalc NyzulEndTime $NyzulEndTime - 24.00" />
- </if>
- <var cmd="setcalc NyzulDispEndHours (int)($NyzulEndTime)" />
- <var cmd="setcalc NyzulDispEndMins (int)(($NyzulEndTime - $NyzulDispEndHours) * 100)" />
- <var cmd="setcalc NyzulTimeRemainingGameHours 12.00" />
- <var cmd="setcalc NyzulTimeRemainingSeconds $NyzulTimeRemainingGameHours * $SecondsPerGameHour" />
- <if advanced='$NyzulFloor > $NyzulJumps'>
- <var cmd="setcalc NyzulTimeAllowedPerFloor $NyzulTimeRemainingSeconds" />
- </if>
- <else>
- <var cmd="setcalc NyzulTimeAllowedPerFloor ($NyzulTimeRemainingSeconds - $NyzulBossTime) / ($NyzulJumps - ($NyzulFloor - 1))" />
- </else>
- <var cmd="setcalc NyzulBaseTimeAllowedPerFloor $NyzulTimeAllowedPerFloor" />
- <addtochat>Starting Nyzul Timer. Run time from $NyzulStartTime to $NyzulDispEndHours.$NyzulDispEndMins</addtochat>
- <!-- Use $NyzulStartTime as a modifier so that commands generated by a separate run version
- of the script won't be caught. -->
- <command>wait $NyzulNotifyDelay;input /ma $NyzulEventTrigger Nyzul:RecurringStatus:$NyzulStartTime</command>
- <command>wait 900;input /ma $NyzulEventTrigger Nyzul:Warn15:$NyzulStartTime</command>
- </if>
- <else>
- <addtochat>Nyzul Timer is already running.</addtochat>
- </else>
- </if>
- <elseif SpellTargetRaw="*:Stop">
- <if advanced='"$NyzulActive"="Yes"'>
- <var cmd="set NyzulActive No" />
- <addtochat>Stopping Nyzul Timer.</addtochat>
- </if>
- </elseif>
- <elseif SpellTargetRaw="*:RecurringStatus:$NyzulStartTime">
- <!-- Exited area -->
- <if NotArea="Nyzul*">
- <addtochat>Left area. Stopping Nyzul Timer.</addtochat>
- <var cmd="set NyzulActive No" />
- <return />
- </if>
- <if advanced='"$NyzulActive"="Yes"'>
- <command>input /ma $NyzulEventTrigger Nyzul:Status</command>
- <command>wait $NyzulNotifyDelay;input /ma $NyzulEventTrigger Nyzul:RecurringStatus:$NyzulStartTime</command>
- </if>
- </elseif>
- <elseif SpellTargetRaw="*:Warn15:$NyzulStartTime">
- <if advanced='"$NyzulActive"="Yes"'>
- <command>input /p 15 minute warning. Use Body Boost.</command>
- </if>
- </elseif>
- <elseif SpellTargetRaw="*:Status">
- <var cmd="setcalc Time1Time $NyzulTimeMarker" />
- <var cmd="setcalc Time1Hours (int)$Time1Time" />
- <var cmd="setcalc Time1Time $Time1Time - $Time1Hours" />
- <var cmd="setcalc Time1Mins (int)($Time1Time * 100)" />
- <var cmd="setcalc Time2Time %Time" />
- <var cmd="setcalc Time2Hours (int)$Time2Time" />
- <var cmd="setcalc Time2Time $Time2Time - $Time2Hours" />
- <var cmd="setcalc Time2Mins (int)($Time2Time * 100)" />
- <var cmd="setcalc DiffTimeHours $Time2Hours - $Time1Hours" />
- <if advanced='$DiffTimeHours < 0'>
- <var cmd="setcalc DiffTimeHours $DiffTimeHours + 23" />
- </if>
- <var cmd="setcalc DiffTimeMins $Time2Mins - $Time1Mins" />
- <if advanced='$DiffTimeMins < 0'>
- <var cmd="setcalc DiffTimeMins 60 - ($Time1Mins - $Time2Mins)" />
- <var cmd="setcalc DiffTimeHours $DiffTimeHours - 1" />
- </if>
- <var cmd="setcalc NyzulTimeSpentOnCurrentFloor (int)($DiffTimeHours * $SecondsPerGameHour + $DiffTimeMins * $SecondsPerGameMin)" />
- <addtochat>Time spent on $NyzulCardinalFloor floor: $NyzulTimeSpentOnCurrentFloor of $NyzulTimeAllowedPerFloor seconds.</addtochat>
- </elseif>
- <return />
- </if>
- </if>
- <elseif Spell="$UpdateTrigger" SpellTargetRaw="NyzulFloor">
- <cancelspell />
- <if advanced='"$NyzulActive"="Yes"'>
- <addtochat>Marking floor $NyzulFloor Cleared!</addtochat>
- <var cmd="setcalc NyzulFloor $NyzulFloor+1" />
- <var cmd="set NyzulTimeMarker %Time" />
- <if advanced='$NyzulFloor=1'>
- <var cmd="set NyzulCardinalFloor 1st" />
- </if>
- <elseif advanced='$NyzulFloor=2'>
- <var cmd="set NyzulCardinalFloor 2nd" />
- </elseif>
- <elseif advanced='$NyzulFloor=3'>
- <var cmd="set NyzulCardinalFloor 3rd" />
- </elseif>
- <else>
- <var cmd="set NyzulCardinalFloor $NyzulFloorth" />
- </else>
- <var cmd="setcalc Time1Time $NyzulTimeMarker" />
- <var cmd="setcalc Time1Hours (int)$Time1Time" />
- <var cmd="setcalc Time1Time $Time1Time - $Time1Hours" />
- <var cmd="setcalc Time1Mins (int)($Time1Time * 100)" />
- <var cmd="setcalc Time2Time $NyzulEndTime" />
- <var cmd="setcalc Time2Hours (int)$Time2Time" />
- <var cmd="setcalc Time2Time $Time2Time - $Time2Hours" />
- <var cmd="setcalc Time2Mins (int)($Time2Time * 100)" />
- <var cmd="setcalc DiffTimeHours $Time2Hours - $Time1Hours" />
- <if advanced='$DiffTimeHours < 0'>
- <var cmd="setcalc DiffTimeHours $DiffTimeHours + 23" />
- </if>
- <var cmd="setcalc DiffTimeMins $Time2Mins - $Time1Mins" />
- <if advanced='$DiffTimeMins < 0'>
- <var cmd="setcalc DiffTimeMins 60 - ($Time1Mins - $Time2Mins)" />
- <var cmd="setcalc DiffTimeHours $DiffTimeHours - 1" />
- </if>
- <var cmd="setcalc NyzulTimeRemainingSeconds (int)($DiffTimeHours * $SecondsPerGameHour + $DiffTimeMins * $SecondsPerGameMin)" />
- <var cmd="setcalc NyzulClimbTimeRemaining $NyzulTimeRemainingSeconds - $NyzulBossTime" />
- <if advanced='$NyzulFloor > $NyzulJumps'>
- <var cmd="setcalc NyzulTimeAllowedPerFloor $NyzulTimeRemainingSeconds" />
- </if>
- <else>
- <var cmd="setcalc NyzulTimeAllowedPerFloor (int)(($NyzulTimeRemainingSeconds - $NyzulBossTime) / ($NyzulJumps - ($NyzulFloor - 1)))" />
- </else>
- <var cmd="setcalc NyzulTimeRemainingMinutes (int)($NyzulTimeRemainingSeconds / 60)" />
- <var cmd="setcalc NyzulTimeRemainingSeconds (int)($NyzulTimeRemainingSeconds - ($NyzulTimeRemainingMinutes * 60))" />
- <command>input /p Now on $NyzulCardinalFloor floor out of $NyzulJumps target floors before boss.</command>
- <command>wait 1;input /p Time remaining: $NyzulTimeRemainingMinutes minutes and $NyzulTimeRemainingSeconds seconds.</command>
- <!-- After 12+ floors (for floor 100; configurable), note when to start single floor climbs. -->
- <if advanced='$NyzulFloor > $NyzulMinJumps AND $NyzulClimbTimeRemaining > 0'>
- <!-- Having just arrived on a new floor, if we have time for at least 1.75 more floors, make the estimation. -->
- <var cmd="setcalc NyzulEstimatedFloors (int)($NyzulClimbTimeRemaining / $NyzulBaseTimeAllowedPerFloor + 0.25) - 1" />
- <if advanced='$NyzulEstimatedFloors > 0'>
- <var cmd="setcalc NyzulMinSingleFloor $NyzulTargetFloor - $NyzulEstimatedFloors" />
- <addtochat>Begin single floor climbs if you are on at least floor $NyzulMinSingleFloor.</addtochat>
- </if>
- </if>
- </if>
- <return />
- </elseif>
- </include>
- </includes>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement