Moderator: MacroQuest Developers
Code: Select all
| 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
Code: Select all
| - twist.mac -
|
| Modified from Colonel's Macro by ml2517
|
| Modified to current form 4/24/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 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[@NonCombatGems].Length}
/if (${Defined[CombatGems]}) /varset NCombatSongs ${String[@CombatGems].Length}
/varset NonCombatSongList @NonCombatGems
/if (${Defined[CombatGems]}) /varset CombatSongList @CombatGems
/varset DynamicBuffer 5
/for TwistI 1 to @NNonCombatSongs
/varcalc TwistJ @TwistI
/varset NonCombatSongArray(@TwistI) ${String["@NonCombatSongList"].Mid[@TwistJ,1]}
/next TwistI
/if (${Defined[CombatGems]}) {
/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[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.State.Equal["SIT"]}) /stand
/goto :Loop
/return
Sub CombatSing(Song)
/declare Buffer local
/declare Duration 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
/varadd 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
/varadd CombatCurSong 1
/if (@CombatCurSong>@NCombatSongs) /varset CombatCurSong 1
/return
Sub NonCombatSing(Song)
/declare Buffer local
/declare Duration 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
/varadd 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
/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