| ChantAssist.mac revised from MyChant by DragonFire 20-March-2008
| MyChant.mac
| Last Updated: 17-May-2004 by Chill
| A Simple chanter macro to: Tash, Slow, and Nuke single pulls, then check basic buff and boggle when agro.
|
| Usage: /mac MyChant [Main Assist] [Nukes]
| [Main Assist] will default to the last tank used and stored in the ini file
| [Nukes] can be 0 for none, 1 for Insanity only, or 2 to chain Insanity and Dementing Visions
#turbo
#Include spellcast.inc
#event MABuffs "#*#Buff me#*#"
#event Zoned "LOADING, PLEASE WAIT..."
Sub Main
| counter variable
/declare c int outer
| hp percentage at which to stop nuking
/declare MinHP int outer 25
| Actual mana at which to stop nuking
/declare NukeMana int outer 2000
| Buff duration under which to recast them
/declare BuffTime int outer 20
| Main Assist
/declare MA string outer
/declare IniFile String outer
/declare Nukes int outer 2
/varset IniFile "ChantAssist.ini"
| INI setup variables 555
/if (${Defined[Param0]}) {
/ini "${IniFile}" Settings MA ${Param0}
/varset MA ${Param0}
} else {
/varset MA ${Ini[${IniFile},Settings,MA,NOTFOUND]}
/if (${MA.Equal["NOTFOUND"]}) {
/echo You need to start the macro with /mac MyChant [Main Assist] and generate your .INI file.
/endmacro
} else {
/echo Assisting ${MA}
}
}
/if (${Defined[Param1]}) {
/ini "${IniFile}" Settings Nukes ${Param1}
/varset Nukes ${Param1}
} else {
/varset Nukes ${Ini[${IniFile},Settings,Nukes,2]}
}
/if (!${Me.Pet.ID}) /call MakePet
/echo Let's get us some ${MA}.
:MainLoop
/call GMCheck
/if (!${Me.Mount.ID}) {
/call cast "Giant White Drum" item 4s
/echo JUST TRIED TO MOUNT
}
/call cast "Learner's Aura Rk. II" gem10 4s
/delay 1s
/doevents
/if (!${Me.Pet.ID}) /call MakePet
/assist ${MA}
|/delay 2s ${target.ID}
/delay 2s
/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<100 && ${Target.PctHPs}>${MinHP}) {
/call TashSlow
/delay 5s
| /call cast "Smother Rk.II"
/call Nuke
| /echo Next please...
} else {
/if (${Target.Type.Equal[NPC]}) /echo ${Target.Name} not yet engaged
/delay 2s (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<100)
/call CheckBuffs
}
/goto :MainLoop
Sub TashSlow
/echo Engaged ${Target.Name} at ${Target.PctHPs}%
| /call Enchant
/call Slow
/call Disempower
/pet attack
/call cast "Mind Twist Rk. II" nodismount
| /call Boggle
| /call Rune
/return
Sub MakePet
/echo Casting Yozan's Animation Rk.II.
/call cast "Yozan's Animation Rk. II" nodismount
/delay 5s
/pet taunt off
/return
Sub Slow
:slowmiss
/call cast "Desolate Deeds" nodismount
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/echo Slowed ${Target.Name} at ${Target.PctHPs}%
/return
} else /if (${Macro.Return.Equal["CAST_IMMUNESLOW"]}) {
/echo ${Target.Name} Immune to slow
/return
} else /if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/echo Misfired Slow spell on ${Target.Name}
/goto :slowmiss
} else {
/echo check slow logic - Probably out of range
/goto :slowmiss
/return slowerror
}
Sub Disempower
:dismiss
/call cast "Fragmented Consciousness Rk. II" nodismount
| /echo ${Macro.Return.Equal["CAST_SUCCESS"]}
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/echo Disempowered ${Target.Name} at ${Target.PctHPs}%
/return SLOWED
} else /if (${Macro.Return.Equal["CAST_IMMUNESLOW"]}) {
/echo ${Target.Name} Immune to disempower
/return IMMUNE
} else /if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/echo Misfired disempower spell on ${Target.Name}
/goto :dismiss
} else {
/echo check disempower logic - Probably out of range
/goto :dismiss
/return disempowererror
}
Sub Enchant
:enchant
/call cast "Visions of Kirathas Rk. II" nodismount
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/echo Enchanted ${Target.Name} at ${Target.PctHPs}%
/return ENCHANTED
} else /if (${Macro.Return.Equal["CAST_IMMUNE"]}) {
/echo ${Target.Name} Immune to enchant
/return IMMUNE
} else /if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/echo Resisted Enchanted spell on ${Target.Name}
/goto :enchant
} else {
/echo check disempower logic - Probably out of range
/goto :enchant
/return enchanterror
Sub Boggle
/echo Boggling ${Target.Name} at ${Target.PctHPs}%
/call cast "Boggle"
/echo Agro
/return AGRO
/return NOAGRO
Sub Tash
:tashmiss
/call cast "Echo of Tashan Rk. II" nodismount
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/echo Tashed ${Target.Name} at ${Target.PctHPs}%
/return SLOWED
} else /if (${Macro.Return.Equal["CAST_IMMUNESLOW"]}) {
/echo ${Target.Name} Immune to tash
/return IMMUNE
} else /if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/echo Misfired tash spell on ${Target.Name}
/goto :tashmiss
} else {
/echo check tash logic - Probably out of range
/goto :tashmiss
/return tasherror
}
/return
Sub Rune
/if (!${Me.Buff["Arcane Rune"].Duration}) /call cast "Arcane Rune"
/return
Sub Nuke
/echo Nuking ${Target.Name} at ${Target.PctHPs}%
/delay 15s ${Me.SpellReady["Polychaotic Assault Rk. II"]}
:nuke
| /call Boggle
/if (${Me.SpellReady["Polychaotic Assault Rk. II"]} && ${Target.PctHPs} >= ${MinHP} && ${Me.CurrentMana} >= ${NukeMana} && ${Nukes} > 0) /call cast "Polychaotic Assault Rk. II" nodismount
| /call Boggle
| /if (${Me.SpellReady["Madness of Ikkibi"]} && ${Target.PctHPs} >= ${MinHP} && ${Me.CurrentMana} >= ${NukeMana} && ${Nukes} > 1) /call cast "Madness of Ikkibi" nodismount
/if (${Target.PctHPs} >= ${MinHP}) /goto :nuke
/return
Sub CheckBuffs
| /echo Checking Buffs...
| /if (${Me.Buff["Arcane Rune"].Duration} < ${BuffTime}) /call cast "Arcane Rune"
/if (${Me.Buff["Hastening of Erradien"].Duration} < ${BuffTime}) /call cast "Hastening of Erradien" nodismount
/if (${Me.Buff["Guard of Druzzil"].Duration} < ${BuffTime}) /call cast "Guard of Druzzil" nodismount
/if (${Me.Buff["Voice of Prescience Rk. II"].Duration} < ${BuffTime}) /call cast "Voice of Prescience Rk. II"
| /if (${Me.Buff["Legion of Xadrith Rk. II"].Duration} < ${BuffTime}) /call cast "Legion of Xadrith Rk. II"
/return TRUE
Sub Event_MABuffs
/echo Buffs incoming...
/target PC ${MA}
/call cast "Hastening of Erradien" nodismount
/call cast "Guard of Druzzil" nodismount
/call cast "Voice of Prescience Rk.II"
| /call cast "Legion of Qandieal Rk. II"
/return
Sub GMCheck
/if (${Spawn[gm].ID}) {
/beep
/beep
/echo Blasted GMs but ending macro...
/keypress forward
/keypress back
/endmacro
}
/return
sub event_Damage
/call Boggle
/return
Sub Event_Zoned
/echo Zoned
/delay 120s
/quit
/endmacro
/return