"You do not seem to have that spell memorized'
i have the latest mq compiled with vs6 and sp6
im gonna mess around with the logic in them but for now here they are in case anyone else wants to beat me to the finish line (im kinda lazy with these things)
here is the one from the depot that ml posted
Code: Select all
| - twist.mac -
|
| Modified from Colonel's Macro by ml2517
|
| Modified to current form 4/23/2004
|
| Combat Twist Order (Optional) --+ <- If you don't feed it a second
| NonCombat Twist Order -----+ | spell set it works with just
| | | one set.
| Usage: v v
| /macro twist.mac ### [###]
| # represents the spell gem number you'd like to sing
|
| Example:
| /macro twist.mac 4567 123456
| /macro twist.mac 123458
Sub Main(Param0)
/if (!${Defined[Param0]}) /endmacro
|
| Variable Declarations
|
/declare CombatCurSong global
/declare NonCombatCurSong global
/declare NNonCombatSongs global
/declare NCombatSongs global
/declare NonCombatSongList global
/declare CombatSongList global
/declare TwistI global
/declare TwistJ global
/declare DynamicBuffer global
/declare NonCombatSongArray array
/declare CombatSongArray array
/declare ArrSong array
|
| Timer Declarations
|
/declare SingTime timer
/varset CombatCurSong 1
/varset NonCombatCurSong 1
/varset NNonCombatSongs ${String[@Param0].Length}
/if (${Defined[Param1]}) /varset NCombatSongs ${String[@Param1].Length}
/varset NonCombatSongList @Param0
/if (${Defined[Param1]}) /varset CombatSongList @Param1
/varset DynamicBuffer 5
/for TwistI 1 to @NNonCombatSongs
/varcalc TwistJ @TwistI
/varset NonCombatSongArray(@TwistI) ${String["@NonCombatSongList"].Mid[@TwistJ,1]}
/next TwistI
/if (${Defined[Param1]}) {
/for TwistI 1 to @NCombatSongs
/varcalc TwistJ @TwistI
/varset CombatSongArray(@TwistI) ${String["@CombatSongList"].Mid[@TwistJ,1]}
/next TwistI
}
:Loop
/if (${Me.State.NotEqual["SIT"]}) {
/if (${Defined[Param1]}) /if (${Me.Combat}) /call CombatSing @CombatSongArray(@CombatCurSong)
/if ((!${Me.Combat})||(!${Defined[Param1]})) /call NonCombatSing @NonCombatSongArray(@NonCombatCurSong)
}
/if (${Me.State.Equal["DUCK"]}) /keypress DUCK
/if (${Me.State.Equal["SIT"]}) /stand
/goto :Loop
/return
Sub CombatSing
/declare Buffer local
/declare Duration local
/varset Duration 0
:CombatSing1
/call CheckSong @Param0
/varset Duration ${Macro.Return}
/varset SingTime 30
/varset Buffer 0
/cast @Param0
:CombatSing2
/delay 1
/if (${Me.Casting.ID}) {
/if (@SingTime<=0) /goto :CombatSingBreak
/goto :CombatSing2
}
:CombatSingBreak
/if (@SingTime>0) /goto :CombatSing1
/if (@Duration==0) {
/delay @DynamicBuffer
/stopsong
} else {
:CombatSing3
/varadd Buffer 1
/delay 1
/if (@Buffer>8) {
/stopsong
/goto :CombatSing1
}
/if (((${Me.Song[@Param0].ID})&&(${Me.Song[@Param0].Duration}<${Math.Calc[@Duration-1]}))||((${Me.Buff["${Me.Gem[@Param0]}"].ID})&&(${Me.Buff["${Me.Gem[@Param0]}"].Duration}<${Math.Calc[@Duration-1]}))) /goto :CombatSing3
/varset DynamicBuffer @Buffer
/stopsong
}
| /echo Dynamic Buffer: @DynamicBuffer
/varadd CombatCurSong 1
/if (@CombatCurSong>@NCombatSongs) /varset CombatCurSong 1
/return
Sub NonCombatSing
/declare Buffer local
/declare Duration local
/varset Duration 0
:NonCombatSing1
/call CheckSong @Param0
/varset Duration ${Macro.Return}
/varset SingTime 30
/varset Buffer 0
/cast @Param0
:NonCombatSing2
/delay 1
/if (${Me.Casting.ID}) {
/if (@SingTime<=0) /goto :NonCombatSingBreak
/goto :NonCombatSing2
}
:NonCombatSingBreak
/if (@SingTime>0) /goto :NonCombatSing1
/if (@Duration==0) {
/delay @DynamicBuffer
/stopsong
} else {
:NonCombatSing3
/varadd Buffer 1
/delay 1
/if (@Buffer>8) {
/stopsong
/goto :NonCombatSing1
}
/if (((${Me.Song[@Param0].ID})&&(${Me.Song[@Param0].Duration}<${Math.Calc[@Duration-1]}))||((${Me.Buff["${Me.Gem[@Param0]}"].ID})&&(${Me.Buff["${Me.Gem[@Param0]}"].Duration}<${Math.Calc[@Duration-1]}))) /goto :NonCombatSing3
/varset DynamicBuffer @Buffer
/stopsong
}
| /echo Dynamic Buffer: @DynamicBuffer
/varadd NonCombatCurSong 1
/if (@NonCombatCurSong>@NNonCombatSongs) /varset NonCombatCurSong 1
/return
Sub CheckSong(GemNumber)
/if (${Me.Gem[@GemNumber].SpellType.Find["Beneficial"]}) {
/if (${Me.Gem[@GemNumber].TargetType.Find["Group"]} || ${Me.Gem[@GemNumber].TargetType.Find["Self"]} || ${Me.Gem[@GemNumber].TargetType.Find["PC"]}) {
/return ${Me.Gem[@GemNumber].Duration}
} else {
/return 0
}
} else {
/return 0
}
/return Here is mine updated from the old clean one
Code: Select all
| - twist.mac -
| Combat Twist Order ------------+
| NonCombat Twist Order -----+ |
| | |
| Usage: v v
| /macro twist.mac ### ###
|
| # represents the spell gem number you'd like to sing
|
| Example:
| /macro twist.mac 4567 123456
|
| b= breath of harmony , c = lute
#event twistMissedNote "You miss a note, bringing your song to a close!"
#event twistRecovered "You haven't recovered yet..."
#event Haste "Your body slows."
#event gem "Your voice quiets."
Sub Main(Param0)
/if (!${Defined[Param0]}) /endmacro
/declare twistCASTTIME global
/declare combatcursong global
/declare noncombatcursong global
/declare nncsongs global
/declare ncsongs global
/declare combatprevsong global
/declare noncombatprevsong global
/declare ncSongList global
/declare cSongList global
/declare SingTime timer
/declare twistI global
/declare twistJ global
/declare ncSongArray array
/declare cSongArray array
/varset twistCASTTIME 33
/varset combatcursong 1
/varset noncombatcursong 1
/varset combatprevsong 1
/varset noncombatprevsong 1
/varset nncsongs ${String[@Param0].Length}
/varset ncsongs ${String[@Param1].Length}
/varset ncSongList @Param0
/varset cSongList @Param1
/for twistI 1 to @nncsongs
/varcalc twistJ @twistI-1
/varset ncSongArray(@twistI) ${String["@ncSongList"].Mid
/next twistI
/for twistI 1 to @ncsongs
/varcalc twistJ @twistI-1
/varset cSongArray(@twistI) ${String["@cSongList"].Mid
/next twistI
/varset twistCASTTIME 32
/stopsong
/cast item "Songblade of the Eternal"
/delay 32
:Loop
/if (${Me.State.NotEqual["SIT"]}) {
/if ((${Me.Combat})&&(@SingTime<=0)) /call CombatSing @cSongArray(@combatcursong)
/if ((!${Me.Combat})&&(@SingTime<=0)) /call NonCombatSing @ncSongArray(@noncombatcursong)
}
/if (${Me.State.Equal["DUCK"]}) /keypress DUCK
/doevents
/goto :Loop
/endmacro
Sub NonCombatSing
/stopsong
/if (${String[@Param1].Compare[c]}) {
/cast item "Lute of the Flowing Waters"
/varset SingTime 2
} else {
/cast @Param0
/varset SingTime @twistCASTTIME
}
/varset noncombatprevsong @noncombatcursong
/varadd noncombatcursong 1
/if (@noncombatcursong>@nncsongs) /varset noncombatcursong 1
/return
Sub CombatSing
/stopsong
/if (${String[@Param0].Compare[b]}) {
/cast item "Breath of Harmony"
/varset SingTime 2
} else {
/cast @Param0
/varset SingTime @twistCASTTIME
}
/varset combatprevsong @combatcursong
/varadd combatcursong 1
/if (@combatcursong>@ncsongs) /varset combatcursong 1
/return
Sub Event_twistMissedNote
/varset combatcursong @combatprevsong
/varset noncombatcursong @noncombatprevsong
/varset SingTime 0
/return
Sub Event_twistRecovered
/varset combatcursong @combatprevsong
/varset noncombatcursong @noncombatprevsong
/stopsong
/varset SingTime 0
/return
Sub Event_haste
/stopsong
/cast item "Songblade of the Eternal"
/delay 32
/varset combatcursong @combatprevsong
/varset noncombatcursong @noncombatprevsong
/varset SingTime 0
/return
Sub Event_gem
/stopsong
/cast item "Voice of the Serpent"
/delay 32
/varset combatcursong @combatprevsong
/varset noncombatcursong @noncombatprevsong
/varset SingTime 0
/return
edit : smileys are bad

