Code: Select all
| - twist.mac -
|
| Modified from Colonel's Macro by ml2517
|
| Modified to current form 5/3/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(NonCombatGems,CombatGems)
/if (!${Defined[NonCombatGems]}) /endmacro
|
| Variable Declarations
|
/declare CombatCurSong int outer
/declare NonCombatCurSong int outer
/declare NNonCombatSongs int outer
/declare NCombatSongs int outer
/declare NonCombatSongList string outer
/declare CombatSongList string outer
/declare TwistI int outer
/declare DynamicBuffer int outer
/declare NonCombatSongArray[30] int outer
/declare CombatSongArray[30] int outer
|
| Timer Declarations
|
/declare SingTime timer outer
/varset CombatCurSong 1
/varset NonCombatCurSong 1
/varset NNonCombatSongs ${Int[${String[${NonCombatGems}].Length}]}
/if (${Defined[CombatGems]}) /varset NCombatSongs ${Int[${String[${CombatGems}].Length}]}
/varset NonCombatSongList ${NonCombatGems}
/if (${Defined[CombatGems]}) /varset CombatSongList ${CombatGems}
/varset DynamicBuffer 5
/for TwistI 1 to ${NNonCombatSongs}
/varset NonCombatSongArray[${TwistI}] ${String["${NonCombatSongList}"].Mid[${TwistI},1]}
/next TwistI
/if (${Defined[CombatGems]}) {
/for TwistI 1 to ${NCombatSongs}
/varset CombatSongArray[${TwistI}] ${String["${CombatSongList}"].Mid[${TwistI},1]}
/next TwistI
}
:Loop
/if (${Me.Standing}) {
/if (${Defined[CombatGems]}) /if (${Me.Combat}) /call CombatSing ${CombatSongArray[${CombatCurSong}]}
/if ((!${Me.Combat})||(!${Defined[CombatGems]})) /call NonCombatSing ${NonCombatSongArray[${NonCombatCurSong}]}
}
/if (${Me.State.Equal["DUCK"]}) /keypress DUCK
/if (!${Me.Standing}) /stand
/goto :Loop
/return
Sub CombatSing(Song)
/declare Buffer int local
/declare Duration int local
/varset Duration 0
:CombatSing1
/call CheckSong ${Song}
/varset Duration ${Macro.Return}
/varset SingTime 30
/varset Buffer 0
/cast "${Me.Gem[${Song}]}"
: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
/varcalc Buffer ${Buffer}+1
/delay 1
/if (${Buffer}>8) {
/stopsong
/goto :CombatSing1
}
/if ((!${Me.Song["${Me.Gem[${Song}]}"].ID})&&(!${Me.Buff["${Me.Gem[${Song}]}"].ID})) /goto :CombatSing3
/if ((${Me.Song["${Me.Gem[${Song}]}"].Duration}<${Math.Calc[${Duration}-1]})&&(${Me.Buff["${Me.Gem[${Song}]}"].Duration}<${Math.Calc[${Duration}-1]})) /goto :CombatSing3
/varset DynamicBuffer ${Buffer}
/stopsong
}
| /echo Dynamic Buffer: ${DynamicBuffer}
/varcalc CombatCurSong ${CombatCurSong}+1
/if (${CombatCurSong}>${NCombatSongs}) /varset CombatCurSong 1
/return
Sub NonCombatSing(Song)
/declare Buffer int local
/declare Duration int local
/varset Duration 0
:NonCombatSing1
/call CheckSong ${Song}
/varset Duration ${Macro.Return}
/varset SingTime 30
/varset Buffer 0
/cast "${Me.Gem[${Song}]}"
: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
/varcalc Buffer ${Buffer}+1
/delay 1
/if (${Buffer}>8) {
/stopsong
/goto :NonCombatSing1
}
/if ((!${Me.Song["${Me.Gem[${Song}]}"].ID})&&(!${Me.Buff["${Me.Gem[${Song}]}"].ID})) /goto :NonCombatSing3
/if ((${Me.Song["${Me.Gem[${Song}]}"].Duration}<${Math.Calc[${Duration}-1]})&&(${Me.Buff["${Me.Gem[${Song}]}"].Duration}<${Math.Calc[${Duration}-1]})) /goto :NonCombatSing3
/varset DynamicBuffer ${Buffer}
/stopsong
}
| /echo Dynamic Buffer: ${DynamicBuffer}
/varcalc NonCombatCurSong ${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"]}) {
/if ((${Me.Gem[${GemNumber}].Name.Equal[Cassindra`s Chant of Clarity]}) || (${Me.Gem[${GemNumber}].Name.Equal[Cassindra's Chorus of Clarity]})) {
/return 3
}
/return ${Me.Gem[${GemNumber}].Duration}
} else {
/return 0
}
} else {
/return 0
}
/return
edit: dkaa for < >


