// ================Healing Functions Rev.2.8.5================ //These macros are greatly enhanced versions of the QuickSwap //Self-healing macro. //These macros settle into a single pulse loop when you equip your //moonstone. Now it includes Tarf's Ultimate Cad macro! //This works better than the ring (if you're not a super respia healer), //so long as you can equip your moonstone. //Bugs? Suggestions? Comments? write noivad -at- mac.com. //Original QuickSwap macro, setting pulse/burst and fall detection //by Noivad using Veer's feedback on the rev1 macro. // ================Installing and Activating================ //To include this macro in your active macros, save this file to your //macros folder. Then open your character's macro //file and type: include "moonstone_functions.txt" //(with the the double quotes) //(if you're already logged on, don't forget to reload your macros.) // ================Basic operation================ //"shift-click" on player, heals them with your cad or //merc staff (change all instances of merc or mercurial staff to caduceus) //"shift-click" on yourself or ground equips you moonstone // and goes into healing loop. //"F3" swaps dagger and moonstone. (again change "itemswap" weapon to your // weapon). //"F4" equips you merc staff, (or Cad) and if a person is selected it //tries to cad them. // ==================================================================== set sleepToggle 1 // This is to allow you to turn off the inifinity loop if you //sleep (add: {setglobal sleepToggle 1} to your sleep macro. set infiniteControl 0 //infiniteControl Needs to be global set rsaveitem @my.right_item set myWeapon "dagger" //change this to your weapon of choice set cadOrMerc "Mercurial Staff" // set this to "Caduceus" or "Mercurial Staff" set cadTarget "" set pulseRate 10 //<--you can change the default here permanently set burstCount 6 //<-- or use the setpulse/burstrate macro below to change it on the fly. set icon 0 f3 call itemswap //f3 switches between an item and your moonstone, //When switching to the moonstone, you get a quick burst //and then it settles into a constant healing loop. shift-f3 { call itemswap call infinityloop setglobal sleepToggle 0 setglobal infiniteControl 0 } f4 //f4 equips your merc staff or cad (just change the name) { // & heals the currently selected person. if @my.right_item != cadOrMerc "/equip merc\r" end if "\use " cadTarget "\r" } burster { //or it prematurely end. (I'm looking into that bug.) setglobal infiniteControl 0 setglobal sleepToggle 0 call moonswap pause 1 "/use " burstCount "\r" pause pulseRate setglobal infiniteControl 0 setglobal sleepToggle 0 call infinityloop } cadswap { if @my.right_item != cadOrMerc "/equip " cadOrMerc "\r" if icon == 1 "/options icon unarmed\r" setglobal icon 0 end if end if } itemswap { set @env.key_interrupts true if @my.right_item != "moonstone" setglobal rsaveitem @my.right_item "/equip moonstone\r" if icon == 1 "/options icon unarmed\r" setglobal icon 0 end if pause 1 "/use " burstCount "\r" pause pulseRate setglobal infiniteControl 0 setglobal sleepToggle 0 call infinityloop else if @my.right_item != myWeapon setglobal rsaveitem @my.right_item setglobal infiniteControl 1 setglobal sleepToggle 0 "/equip " myWeapon "\r" if icon == 0 "/options icon armed\r" setglobal icon 1 end if end if } moonswap { set burstRate pulseRate set burstRate * 2 set swaploop 3 set @env.key_interrupts true if @my.right_item != "moonstone" setglobal rsaveitem @my.right_item "/equip moonstone\r" if icon == 1 "/options icon unarmed\r" setglobal icon 0 end if end if } infinityloop //this loop makes constant self-healing possible { set @env.key_interrupts false set i 0 label infinity if sleepToggle == 0 if infiniteControl != 1 if i <= 120 set i + 1 if @my.right_item == "moonstone" //checks to make sure you have the moonstone equiped "/use\r" pause 1 if @env.textLog < "in your current condition." //if you fall this stops the loop setglobal infiniteControl 1 end if pause pulseRate goto infinity else pause 1 setglobal infiniteControl 1 end if else pause pulseRate set i 0 pause pulseRate call burster goto infinity end if end if end if if infiniteControl != 1 message "Constant healing loop has ended. To restart please press shift-f3" end if } // ------- changing pulse rate burst count on the fly ------- "setpulse" { set max 40 if @text == "?" message "This command lets the interval (in frames) between moonstone uses (called pulses)." pause 10 message "CL runs at 4 fps (3fps primetime), the maximum interval you can set is" max " frames unless you type \"setpulse override \"" pause 10 message " Curent pulse interval is " pulseRate "frames." "setpulse " else if @text < "override" setglobal pulseRate @text.word[1] else if @text <= max if @text > 1 setglobal pulseRate @text message "pulse rate is now " pulseRate else if @text < 1 setglobal pulseRate 0 message "Minimum pulse interval is 1 frame." end if else message @text "is out of scope. Type \"setpulse ?\" for help." "setpulse" end if } "setburst" { set max 100 if @text == "" "Type a number after typing \"setburst\". Type \"setburst ?\" for help." else if @text == "?" message "Type the number of uses for burst self-healing: \"setburst \"" pause 8 message "They maximum uses in one burst is " max "." pause 8 message "Curent burst rate is " burstCount pause 2 "burstRate" else if @text <= max setglobal burstCount @text else message @text "is out of scope. Type \"setpulse ?\" for help." end if } //ultimate_cad //This section copies Tarf's Ultimate Cad Macro, and bolts on the healing loop Control-click { $any_click "/select " @clicksplayer "\r" if @selplayer.simple_name == "" call burster else if @selplayer.simple_name == @my.name call burster else call cadswap setglobal cadTarget @selplayer.simple_name message "You are healing " @selplayer.name "/use " cadTarget "\r" end if end if } Shift-control-click { $any_click "/select " @clicksplayer "\r" if @selplayer.simple_name == "" call burster else if @selplayer.simple_name == @my.name call burster else call cadswap "/use /lock " @selplayer.simple_name "\r" message "You are healing " @selplayer.name end if end if } // ****************************CadTargeting Section***************************** // As of version 2.8.3 you can now set cad targets of up to 4 people. // Setting Cad targets is easy, you right click on a player and hit F9-F12 // the first time you set this. // When to reset it to a new person hit shift-F9(-12) // ***************************************************************************** set cadTarget[1] "" set cadTarget[2] "" set cadTarget[3] "" set cadTarget[4] "" f9 { call cadswap if cadTarget[1] == "" setglobal cadTarget[1] @selplayer.simple_name message "*Set " cadTarget[1] " as cad target F9." end if "/select " cadTarget[1] "\r" "/use " @selplayer.simple_name "\r" } shift-f9 { call cadswap setglobal cadTarget[1] @selplayer.simple_name "/use " cadTarget[1] "\r" message "*Set " cadTarget[1] " as cad target F9." } f10 { call cadswap if cadTarget[2] == "" setglobal cadTarget[2] @selplayer.simple_name message "*Set " cadTarget[2] " as cad target F10." end if "/select " cadTarget[2] "\r" "/use " @selplayer.simple_name "\r" } shift-f10 { call cadswap setglobal cadTarget[2] @selplayer.simple_name "/use " cadTarget[2] "\r" message "*Set " cadTarget[2] " as cad target F10." } f11 { call cadswap if cadTarget[3] == "" setglobal cadTarget[3] @selplayer.simple_name message "*Set " cadTarget[3] " as cad target F11." end if "/select " cadTarget[3] "\r" "/use " @selplayer.simple_name "\r" } shift-f11 { call cadswap setglobal cadTarget[3] @selplayer.simple_name "/use " cadTarget[3] "\r" message "*Set " cadTarget[3] " as cad target F11." } f12 { call cadswap if cadTarget[4] == "" setglobal cadTarget[4] @selplayer.simple_name message "*Set " cadTarget[4] " as cad target F12." end if "/select " cadTarget[4] "\r" "/use " @selplayer.simple_name "\r" } shift-f12 { call cadswap setglobal cadTarget[4] @selplayer.simple_name "/use " cadTarget[4] "\r" message "*Set " cadTarget[4] " as cad target F12." }