Page 1 of 5

Twitch.mac -- Automated Twitch for necros.

Posted: Wed Nov 24, 2004 1:15 am
by JP5
This macro continually casts Sedulous Subversion and Covetous Subversion on your desired target.

It will memorize the two spells in the slots you specify.

To toggle Twitch on/off, press Ctrl+\ . You can change this bind if you wish in the macro.

If you lose your target, it turns twitching to OFF until you turn it back on.

This macro is meant to run for the duration of a raid. Whenever you want to twitch someone, you target them and press Ctrl+\. When you want to stop, press Ctrl+\ again. The macro will keep running. Just target someone new and hit Ctrl+\ when you want to resume.

If there are any bugs or questions let me know with PM or reply to post..

Code: Select all

|twitch.mac
| Twitch one person with both of your twitch spells.
| Use "Ctrl \" combo to start twitching or stop twitching.

#event OOM "#*#Insufficient Mana#*#"

|--------------------------------------
|--- SUB: Main
|--------------------------------------
Sub Main


/declare Twitch1Slot int outer
/declare Twitch2Slot int outer
/declare Ready1 bool outer FALSE
/declare Ready2 bool outer FALSE
/declare Ready1Timer timer outer
/declare Ready2Timer timer outer

/declare TwitchToggle int outer 0

/declare TwitchToggleChange int outer 0

|--- Custombind routine
/squelch /custombind delete TwichToggle
/squelch /custombind add TwitchToggle
/squelch /custombind set TwitchToggle /varset TwitchToggleChange 1
/bind TwitchToggle Ctrl+\

|-------------------------------------------------
|--- which slots do you use for Sedulous/Covetous?
/varset Twitch1Slot 7
/varset Twitch2Slot 8
|-------------------------------------------------

/if (${Me.Gem[Sedulous Subversion]}) {
   /varset Ready1 TRUE
   } else /varset Ready1 FALSE

/if (${Me.Gem[Covetous Subversion]}) {
   /varset Ready2 TRUE
   } else /varset Ready2 FALSE

:retry1
/delay 1
/if (${Ready1}==FALSE) {
   /memspell ${Twitch1Slot} "Sedulous Subversion"
   /varset Ready1Timer 80
   }
:loop1
/delay 1
/if (!${String[${Me.Gem["Sedulous Subversion"]}].NotEqual[NULL]}) /if (${Ready1Timer}<1) /goto :retry1
/if (${String[${Me.Gem["Sedulous Subversion"]}].NotEqual[NULL]}) /goto :next
/goto :loop1

:next

:retry2
/delay 1
/if (${Ready2}==FALSE) {
   /memspell ${Twitch2Slot} "Covetous Subversion"
   /varset Ready2Timer 80
   }
:loop2
/delay 1
/if (!${String[${Me.Gem["Covetous Subversion"]}].NotEqual[NULL]}) /if (${Ready2Timer}<1) /goto :retry2
/if (${String[${Me.Gem["Covetous Subversion"]}].NotEqual[NULL]}) /goto :ready
/goto :loop2

:ready

/call TwitchTarget

/return


|--------------------------------------
|--- SUB: TwitchTarget
|--------------------------------------
Sub TwitchTarget

/echo To toggle twitching, press Ctrl+\
|--- Main Twitching Loop.
:twitchloop

/doevents
/delay 1

/if (${TwitchToggleChange}==1) {
   /varset TwitchToggle ${If[${TwitchToggle}==1,0,1]}
   /varset TwitchToggleChange 0
   }
/if (${Target.Type.Equal[PC]}) {
/if (${TwitchToggle}==1) {
   /if (${Me.SpellReady[Sedulous Subversion]}) /if (${String[${Me.Casting}].Equal[NULL]}) /cast "Sedulous Subversion"
   }
}

/doevents
/delay 1

/if (${TwitchToggleChange}==1) {
   /varset TwitchToggle ${If[${TwitchToggle}==1,0,1]}
   /varset TwitchToggleChange 0
   }
/if (${Target.Type.Equal[PC]}) {
/if (${TwitchToggle}==1) {
   /if (${Me.SpellReady[Covetous Subversion]}) /if (${String[${Me.Casting}].Equal[NULL]}) /cast "Covetous Subversion"
   }
}

/goto :twitchloop
|--- End Main Twitching Loop.
/return


|--------------------------------------
|--- EVENT: OOM
|--------------------------------------
Sub Event_OOM
/echo Twitching stopped due to OOM. Press Ctrl \ at any time to resume.
/varset TwitchToggle 0
/return 

Posted: Wed Nov 24, 2004 6:56 am
by blueninja
Suggestion, add a custombind to start twitching the last person who sent you a tell.. I know that's what I'd add if I played a raiding necro. Looks nice though..

Oh and

Code: Select all

/if (${String[${Me.Gem["Sedulous Subversion"]}].NotEqual[NULL]}) { 
could be written

Code: Select all

/if (${Me.Gem["Sedulous Subversion"]}) { 

Posted: Wed Nov 24, 2004 8:09 am
by Shenlon
Interesting concept, might play with this some more as I could definitely use it.

Posted: Wed Nov 24, 2004 2:40 pm
by JP5
I use this macro for double-twitching on demand, because I hate casting the two spells over and over again. Feel free to modify it so that it has a toggle for auto-twitching on a tell... but there are a few problems with this, some that can be fixed and some that can't.
When you receive a tell you can do a check to make sure that the sender is a Cleric or Druid easily enough, but it's more difficult to know how many times to twitch the person. Also their method of notification is different each time. Usually there's a healer channel, but still some people send tells.

I'll change the ${String} to ${Me.Gem}. Thanks.

Posted: Wed Nov 24, 2004 3:27 pm
by blueninja
JP5 wrote:Feel free to modify it so that it has a toggle for auto-twitching on a tell... but there are a few problems with this, some that can be fixed and some that can't.
That's not what I meant.. I meant that when you push some button it will start twitching whoever sent you a tell last.. So when you get "Joe tells you, "omgz need mana", you dont have to /target joe then press your button, you can just press your button and it will start right away. But anyway it was just a suggestion, I put that feature into my own twitch macro and I find it useful. Not that it matters that much to me though, my necro is just an alt so I don't use it very often.. :)

Posted: Wed Nov 24, 2004 8:51 pm
by JP5
Ah that makes more sense, thanks for clarifying.

Posted: Wed Jan 19, 2005 3:30 pm
by JP5
n/a

Posted: Sat Mar 04, 2006 3:19 am
by WhiteWolf
i fixed this macro to work after string was removed during a raid in PoA tonight. works just as it did before.

enjoy.

Code: Select all

|twitch.mac
| Twitch one person with both of your twitch spells.
| Use "Ctrl \" combo to start twitching or stop twitching.

#event OOM "#*#Insufficient Mana#*#"

|--------------------------------------
|--- SUB: Main
|--------------------------------------
Sub Main


/declare Twitch1Slot int outer
/declare Twitch2Slot int outer
/declare Ready1 bool outer FALSE
/declare Ready2 bool outer FALSE
/declare Ready1Timer timer outer
/declare Ready2Timer timer outer

/declare TwitchToggle int outer 0

/declare TwitchToggleChange int outer 0

|--- Custombind routine
/squelch /custombind delete TwichToggle
/squelch /custombind add TwitchToggle
/squelch /custombind set TwitchToggle /varset TwitchToggleChange 1
/bind TwitchToggle Ctrl+\

|-------------------------------------------------
|--- which slots do you use for Sedulous/Covetous?
/varset Twitch1Slot 7
/varset Twitch2Slot 8
|-------------------------------------------------

/if (${Me.Gem[Sedulous Subversion]}) {
   /varset Ready1 TRUE
   } else /varset Ready1 FALSE

/if (${Me.Gem[Covetous Subversion]}) {
   /varset Ready2 TRUE
   } else /varset Ready2 FALSE

:retry1
/delay 1
/if (${Ready1}==FALSE) {
   /memspell ${Twitch1Slot} "Sedulous Subversion"
   /varset Ready1Timer 80
   }
:loop1
/delay 1
/if (!${Me.Gem["Sedulous Subversion"]}) /if (${Ready1Timer}<1) /goto :retry1
/if (${Me.Gem["Sedulous Subversion"]}) /goto :next
/goto :loop1

:next

:retry2
/delay 1
/if (${Ready2}==FALSE) {
   /memspell ${Twitch2Slot} "Covetous Subversion"
   /varset Ready2Timer 80
   }
:loop2
/delay 1
/if (!${Me.Gem["Covetous Subversion"]}) /if (${Ready2Timer}<1) /goto :retry2
/if (${Me.Gem["Covetous Subversion"]}) /goto :ready
/goto :loop2

:ready

/call TwitchTarget

/return


|--------------------------------------
|--- SUB: TwitchTarget
|--------------------------------------
Sub TwitchTarget

/echo To toggle twitching, press Ctrl+\
|--- Main Twitching Loop.
:twitchloop

/doevents
/delay 1

/if (${TwitchToggleChange}==1) {
   /varset TwitchToggle ${If[${TwitchToggle}==1,0,1]}
   /varset TwitchToggleChange 0
   }
/if (${Target.Type.Equal[PC]}) {
/if (${TwitchToggle}==1) {
   /if (${Me.SpellReady[Sedulous Subversion]}) /if (!${Me.Casting.ID}) /cast "Sedulous Subversion"
   }
}

/doevents
/delay 1

/if (${TwitchToggleChange}==1) {
   /varset TwitchToggle ${If[${TwitchToggle}==1,0,1]}
   /varset TwitchToggleChange 0
   }
/if (${Target.Type.Equal[PC]}) {
/if (${TwitchToggle}==1) {
   /if (${Me.SpellReady[Covetous Subversion]}) /if (!${Me.Casting.ID}) /cast "Covetous Subversion"
   }
}

/goto :twitchloop
|--- End Main Twitching Loop.
/return


|--------------------------------------
|--- EVENT: OOM
|--------------------------------------
Sub Event_OOM
/echo Twitching stopped due to OOM. Press Ctrl \ at any time to resume.
/varset TwitchToggle 0
/return

Re: Twitch.mac -- Automated Twitch for necros.

Posted: Mon Mar 03, 2025 7:01 am
by xyilla

Re: Twitch.mac -- Automated Twitch for necros.

Posted: Mon Mar 03, 2025 7:02 am
by xyilla

Re: Twitch.mac -- Automated Twitch for necros.

Posted: Mon Mar 03, 2025 7:03 am
by xyilla

Re: Twitch.mac -- Automated Twitch for necros.

Posted: Mon Mar 03, 2025 7:04 am
by xyilla

Re: Twitch.mac -- Automated Twitch for necros.

Posted: Mon Mar 03, 2025 7:05 am
by xyilla

Re: Twitch.mac -- Automated Twitch for necros.

Posted: Mon Mar 03, 2025 7:07 am
by xyilla

Re: Twitch.mac -- Automated Twitch for necros.

Posted: Mon Mar 03, 2025 7:08 am
by xyilla