Advertisement
Motenten

NyzulTimer

Mar 15th, 2012
1,067
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 12.91 KB | None | 0 0
  1.  <?xml version="1.0" encoding="utf-8"?>
  2.     <!-- Last modified: 3/21/2012 5:11:36 PM -->
  3.  
  4. <includes>
  5.  
  6.     <!-- Commands:
  7.        /ma trigger99 Nyzul:start -- Initiates timer
  8.        /ma trigger99 Nyzul:stop -- Stops timer
  9.        ~~ Timer automatically turns itself off when outside of Nyzul Isle
  10.        
  11.        /ma update NyzulFloor -- Notify the timer that a floor has been cleared, and update values.
  12.                                 Hit macro for this as soon as possible after climbing to a new floor.
  13.  
  14.        Note: These are using the new trigger system spells by default.  If you don't have them
  15.         set up, replace Trigger99 and Update with other unused spells or abilities.
  16.        
  17.        Place this include in vars:
  18.        <xi:include href="NyzulTimer.xml" xpointer="//include[@name='NyzulTimerVars']/*" />
  19.        Place this include in rules:
  20.        <xi:include href="NyzulTimer.xml" xpointer="//include[@name='NyzulTimer']/*" />
  21.     -->
  22.      
  23.     <include name="NyzulTimerVars">
  24.         <!-- ~~~~~~~     CONFIG     ~~~~~~~ -->
  25.        
  26.         <!-- Which trigger spells to use, to avoid conflicts with other code. -->
  27.         <var name="NyzulEventTrigger">Trigger99</var>
  28.         <var name="UpdateTrigger">Update</var>
  29.  
  30.         <!-- How many jumps you want to allow for taking. -->
  31.         <var name="NyzulJumps">15</var>
  32.         <!-- Time necessary to kill boss and lot spoils. -->
  33.         <var name="NyzulBossTime">180</var>
  34.         <!-- Delay period between notifications of your progress. -->
  35.         <var name="NyzulNotifyDelay">45</var>
  36.         <!-- Which floor you intend to reach. -->
  37.         <var name="NyzulTargetFloor">100</var>
  38.         <!-- Minimum number of jumps you need to complete before it's possible to start consider single jumps. -->
  39.         <!-- Set to 11 for floor 100, 9 for 80, 7 for 60, 5 for 40, 2 for 20 -->
  40.         <var name="NyzulMinJumps">11</var>
  41.  
  42.         <!-- ~~~~~~~   END CONFIG   ~~~~~~~ -->
  43.  
  44.        
  45.         <!-- Variables used by the script. -->
  46.  
  47.         <var name="NyzulActive">No</var>
  48.         <var name="NyzulFloor">0</var>
  49.         <var name="NyzulCardinalFloor">Lobby</var>
  50.  
  51.         <!-- 2.4 minutes per game hour == 144 seconds -->
  52.         <var name="SecondsPerGameHour">144</var>
  53.         <var name="SecondsPerGameMin">2.4</var>
  54.  
  55.         <var name="NyzulStartTime">0</var>
  56.         <var name="NyzulEndTime">0</var>
  57.         <var name="NyzulTimeMarker">0.0</var>
  58.  
  59.         <var name="NyzulDispEndHours">0</var>
  60.         <var name="NyzulDispEndMins">0</var>
  61.  
  62.         <var name="NyzulTimeRemainingGameHours">0</var>
  63.         <var name="NyzulTimeRemainingMinutes">0</var>
  64.         <var name="NyzulTimeRemainingSeconds">0</var>
  65.         <var name="NyzulClimbTimeRemaining">0</var>
  66.  
  67.         <var name="NyzulBaseTimeAllowedPerFloor">1</var>
  68.         <var name="NyzulTimeAllowedPerFloor">1</var>
  69.         <var name="NyzulTimeOnCurrentFloor">0</var>
  70.         <var name="NyzulTimeSpentOnCurrentFloor">0</var>
  71.         <var name="NyzulEstimatedFloors">0</var>
  72.         <var name="NyzulMinSingleFloor">0</var>
  73.  
  74.         <var name="Time1Time">0</var>
  75.         <var name="Time2Time">0</var>
  76.         <var name="Time1Hours">0</var>
  77.         <var name="Time2Hours">0</var>
  78.         <var name="Time1Mins">0</var>
  79.         <var name="Time2Mins">0</var>
  80.         <var name="DiffTimeHours">0</var>
  81.         <var name="DiffTimeMins">0</var>
  82.     </include>
  83.  
  84.  
  85.     <include name="NyzulTimer">
  86.         <if Spell="$NyzulEventTrigger">
  87.             <cancelspell />
  88.             <if SpellTargetRaw="Nyzul:*">
  89.                 <if SpellTargetRaw="*:Start">
  90.                     <if advanced='"$NyzulActive"="No"'>
  91.                         <var cmd="set NyzulFloor 0" />
  92.                         <var cmd="set NyzulCardinalFloor Lobby" />
  93.                         <var cmd="set NyzulActive Yes" />
  94.                        
  95.                         <var cmd="set NyzulStartTime %Time" />
  96.                         <var cmd="set NyzulTimeMarker $NyzulStartTime" />
  97.                        
  98.                         <var cmd="setcalc NyzulEndTime $NyzulStartTime + 12.00" />
  99.                         <if advanced='$NyzulEndTime &gt; 24.00'>
  100.                             <var cmd="setcalc NyzulEndTime $NyzulEndTime - 24.00" />
  101.                         </if>
  102.  
  103.                         <var cmd="setcalc NyzulDispEndHours (int)($NyzulEndTime)" />
  104.                         <var cmd="setcalc NyzulDispEndMins (int)(($NyzulEndTime - $NyzulDispEndHours) * 100)" />
  105.  
  106.                         <var cmd="setcalc NyzulTimeRemainingGameHours 12.00" />
  107.    
  108.                         <var cmd="setcalc NyzulTimeRemainingSeconds $NyzulTimeRemainingGameHours * $SecondsPerGameHour" />
  109.                        
  110.                         <if advanced='$NyzulFloor &gt; $NyzulJumps'>
  111.                             <var cmd="setcalc NyzulTimeAllowedPerFloor $NyzulTimeRemainingSeconds" />
  112.                         </if>
  113.                         <else>
  114.                             <var cmd="setcalc NyzulTimeAllowedPerFloor ($NyzulTimeRemainingSeconds - $NyzulBossTime) / ($NyzulJumps - ($NyzulFloor - 1))" />
  115.                         </else>
  116.  
  117.                         <var cmd="setcalc NyzulBaseTimeAllowedPerFloor $NyzulTimeAllowedPerFloor" />
  118.  
  119.                         <addtochat>Starting Nyzul Timer.  Run time from $NyzulStartTime to $NyzulDispEndHours.$NyzulDispEndMins</addtochat>
  120.                        
  121.                         <!-- Use $NyzulStartTime as a modifier so that commands generated by a separate run version
  122.                             of the script won't be caught. -->
  123.                         <command>wait $NyzulNotifyDelay;input /ma $NyzulEventTrigger Nyzul:RecurringStatus:$NyzulStartTime</command>
  124.                         <command>wait 900;input /ma $NyzulEventTrigger Nyzul:Warn15:$NyzulStartTime</command>
  125.                     </if>
  126.                     <else>
  127.                         <addtochat>Nyzul Timer is already running.</addtochat>
  128.                     </else>
  129.                 </if>
  130.                 <elseif SpellTargetRaw="*:Stop">
  131.                     <if advanced='"$NyzulActive"="Yes"'>
  132.                         <var cmd="set NyzulActive No" />
  133.                         <addtochat>Stopping Nyzul Timer.</addtochat>
  134.                     </if>
  135.                 </elseif>
  136.                 <elseif SpellTargetRaw="*:RecurringStatus:$NyzulStartTime">
  137.                     <!-- Exited area -->
  138.                     <if NotArea="Nyzul*">
  139.                         <addtochat>Left area.  Stopping Nyzul Timer.</addtochat>
  140.                         <var cmd="set NyzulActive No" />
  141.                         <return />
  142.                     </if>
  143.  
  144.                     <if advanced='"$NyzulActive"="Yes"'>
  145.                         <command>input /ma $NyzulEventTrigger Nyzul:Status</command>
  146.                         <command>wait $NyzulNotifyDelay;input /ma $NyzulEventTrigger Nyzul:RecurringStatus:$NyzulStartTime</command>
  147.                     </if>
  148.                 </elseif>
  149.                 <elseif SpellTargetRaw="*:Warn15:$NyzulStartTime">
  150.                     <if advanced='"$NyzulActive"="Yes"'>
  151.                         <command>input /p 15 minute warning.  Use Body Boost.</command>
  152.                     </if>
  153.                 </elseif>
  154.                 <elseif SpellTargetRaw="*:Status">
  155.                     <var cmd="setcalc Time1Time $NyzulTimeMarker" />
  156.                     <var cmd="setcalc Time1Hours (int)$Time1Time" />
  157.                     <var cmd="setcalc Time1Time $Time1Time - $Time1Hours" />
  158.                     <var cmd="setcalc Time1Mins (int)($Time1Time * 100)" />
  159.  
  160.                     <var cmd="setcalc Time2Time %Time" />
  161.                     <var cmd="setcalc Time2Hours (int)$Time2Time" />
  162.                     <var cmd="setcalc Time2Time $Time2Time - $Time2Hours" />
  163.                     <var cmd="setcalc Time2Mins (int)($Time2Time * 100)" />
  164.  
  165.                     <var cmd="setcalc DiffTimeHours $Time2Hours - $Time1Hours" />
  166.                    
  167.                     <if advanced='$DiffTimeHours &lt; 0'>
  168.                         <var cmd="setcalc DiffTimeHours $DiffTimeHours + 23" />
  169.                     </if>
  170.  
  171.                     <var cmd="setcalc DiffTimeMins $Time2Mins - $Time1Mins" />
  172.  
  173.                     <if advanced='$DiffTimeMins &lt; 0'>
  174.                         <var cmd="setcalc DiffTimeMins 60 - ($Time1Mins - $Time2Mins)" />
  175.                         <var cmd="setcalc DiffTimeHours $DiffTimeHours - 1" />
  176.                     </if>
  177.  
  178.                     <var cmd="setcalc NyzulTimeSpentOnCurrentFloor (int)($DiffTimeHours * $SecondsPerGameHour + $DiffTimeMins * $SecondsPerGameMin)" />
  179.  
  180.                     <addtochat>Time spent on $NyzulCardinalFloor floor: $NyzulTimeSpentOnCurrentFloor of $NyzulTimeAllowedPerFloor seconds.</addtochat>
  181.                 </elseif>
  182.  
  183.                 <return />
  184.             </if>
  185.         </if>
  186.         <elseif Spell="$UpdateTrigger" SpellTargetRaw="NyzulFloor">
  187.             <cancelspell />
  188.             <if advanced='"$NyzulActive"="Yes"'>
  189.                 <addtochat>Marking floor $NyzulFloor Cleared!</addtochat>
  190.                 <var cmd="setcalc NyzulFloor $NyzulFloor+1" />
  191.                 <var cmd="set NyzulTimeMarker %Time" />
  192.                
  193.                 <if advanced='$NyzulFloor=1'>
  194.                     <var cmd="set NyzulCardinalFloor 1st" />
  195.                 </if>
  196.                 <elseif advanced='$NyzulFloor=2'>
  197.                     <var cmd="set NyzulCardinalFloor 2nd" />
  198.                 </elseif>
  199.                 <elseif advanced='$NyzulFloor=3'>
  200.                     <var cmd="set NyzulCardinalFloor 3rd" />
  201.                 </elseif>
  202.                 <else>
  203.                     <var cmd="set NyzulCardinalFloor $NyzulFloorth" />
  204.                 </else>
  205.  
  206.  
  207.                 <var cmd="setcalc Time1Time $NyzulTimeMarker" />
  208.                 <var cmd="setcalc Time1Hours (int)$Time1Time" />
  209.                 <var cmd="setcalc Time1Time $Time1Time - $Time1Hours" />
  210.                 <var cmd="setcalc Time1Mins (int)($Time1Time * 100)" />
  211.  
  212.                 <var cmd="setcalc Time2Time $NyzulEndTime" />
  213.                 <var cmd="setcalc Time2Hours (int)$Time2Time" />
  214.                 <var cmd="setcalc Time2Time $Time2Time - $Time2Hours" />
  215.                 <var cmd="setcalc Time2Mins (int)($Time2Time * 100)" />
  216.  
  217.                 <var cmd="setcalc DiffTimeHours $Time2Hours - $Time1Hours" />
  218.                
  219.                 <if advanced='$DiffTimeHours &lt; 0'>
  220.                     <var cmd="setcalc DiffTimeHours $DiffTimeHours + 23" />
  221.                 </if>
  222.  
  223.                 <var cmd="setcalc DiffTimeMins $Time2Mins - $Time1Mins" />
  224.  
  225.                 <if advanced='$DiffTimeMins &lt; 0'>
  226.                     <var cmd="setcalc DiffTimeMins 60 - ($Time1Mins - $Time2Mins)" />
  227.                     <var cmd="setcalc DiffTimeHours $DiffTimeHours - 1" />
  228.                 </if>
  229.            
  230.  
  231.                 <var cmd="setcalc NyzulTimeRemainingSeconds (int)($DiffTimeHours * $SecondsPerGameHour + $DiffTimeMins * $SecondsPerGameMin)" />
  232.                 <var cmd="setcalc NyzulClimbTimeRemaining $NyzulTimeRemainingSeconds - $NyzulBossTime" />
  233.                
  234.                 <if advanced='$NyzulFloor &gt; $NyzulJumps'>
  235.                     <var cmd="setcalc NyzulTimeAllowedPerFloor $NyzulTimeRemainingSeconds" />
  236.                 </if>
  237.                 <else>
  238.                     <var cmd="setcalc NyzulTimeAllowedPerFloor (int)(($NyzulTimeRemainingSeconds - $NyzulBossTime) / ($NyzulJumps - ($NyzulFloor - 1)))" />
  239.                 </else>
  240.  
  241.                 <var cmd="setcalc NyzulTimeRemainingMinutes (int)($NyzulTimeRemainingSeconds / 60)" />
  242.                 <var cmd="setcalc NyzulTimeRemainingSeconds (int)($NyzulTimeRemainingSeconds - ($NyzulTimeRemainingMinutes * 60))" />
  243.  
  244.  
  245.                 <command>input /p Now on $NyzulCardinalFloor floor out of $NyzulJumps target floors before boss.</command>
  246.                 <command>wait 1;input /p Time remaining: $NyzulTimeRemainingMinutes minutes and $NyzulTimeRemainingSeconds seconds.</command>
  247.                
  248.                
  249.                 <!-- After 12+ floors (for floor 100; configurable), note when to start single floor climbs. -->
  250.                 <if advanced='$NyzulFloor &gt; $NyzulMinJumps AND $NyzulClimbTimeRemaining &gt; 0'>
  251.                     <!-- Having just arrived on a new floor, if we have time for at least 1.75 more floors, make the estimation. -->
  252.                     <var cmd="setcalc NyzulEstimatedFloors (int)($NyzulClimbTimeRemaining / $NyzulBaseTimeAllowedPerFloor + 0.25) - 1" />
  253.                     <if advanced='$NyzulEstimatedFloors &gt; 0'>
  254.                         <var cmd="setcalc NyzulMinSingleFloor $NyzulTargetFloor - $NyzulEstimatedFloors" />
  255.                         <addtochat>Begin single floor climbs if you are on at least floor $NyzulMinSingleFloor.</addtochat>
  256.                     </if>
  257.                 </if>
  258.             </if>
  259.            
  260.             <return />
  261.         </elseif>
  262.     </include>
  263.  
  264. </includes>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement