Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
So what's the link?
holyshit1=/if (!${Me.Song[Field Champion].ID}) /disc Field Champion
holyshit18=/if (${Me.Combat} && ${Me.CombatAbilityReady[Slander rk. ii]} && ${Melee.AggroMode}) /disc Slander rk. ii
holyshit19=/if (${Me.Combat} && ${Me.AltAbilityReady[Blast of Anger]} && ${Melee.AggroMode}) /alt act 3646
holyshit22=/if (${Me.Combat} && ${Me.AltAbilityReady[rage of the forsaken]} && ${Melee.AggroMode}) /alt act 688
holyshit20=/if (${Me.Combat} && ${Me.CombatAbilityReady[Burning Shout rk. ii]} && ${Melee.AggroMode}) /disc Burning Shout rk. ii
holyshit21=/if (${Me.Combat} && ${Me.CombatAbilityReady[Kluzen's roar]} && ${Melee.AggroMode}) /disc Kluzen's roar
downshit0=/if (${Me.CombatAbilityReady[Bloodlust Aura]} && !${Me.Aura.Name.Find[Bloodlust Aura]} && ${Me.PctEndurance}) /disc Bloodlust Aura
downshit1=/if (${Me.CombatAbilityReady[${Spell[Breather].RankName}]} && ${Me.PctEndurance}<21) /disc ${Spell[Breather].RankName}
downshit2=/if (${Me.Inventory[mainhand].Type.Find[Blunt]} && !${Me.Buff[Familiar: Blunt Force].ID} && ${FindItemCount[=Blunt Force]}) /casting "Blunt Force|Item"
downshit3=/if (${Me.Inventory[mainhand].Type.Find[Slashing]} && !${Me.Buff[Familiar: Razors Edge].ID} && ${FindItemCount[=Razors Edge]}) /casting "Razors Edge|Item"
downshit4=/if (${FindItemCount[=Jymall's Gloves of Frenzy]} && ${Spell[${FindItem[Jymall's Gloves of Frenzy].Spell}].Stacks} && !${Me.Buff[Miraculous Visions].ID}) /casting "Jymall's Gloves of Frenzy|Item"
downshit5=/if (${Me.Height} > 1.91 && ${FindItemCount[=Humanoid Reductionizer]}) /multiline ; /target id ${Me.ID} ; /timed 10 /casting "Humanoid Reductionizer|Item"
downshit6=/if (${FindItemCount[Distillate of Alacrity]} && ${Spell[${FindItem[Distillate of Alacrity].Spell}].Stacks}) /casting "${FindItem[Distillate of Alacrity].Name}|Item"
downshit7=/if (${FindItemCount[=Jymall's Tunic of Frenzy]} && ${Spell[${FindItem[Jymall's Tunic of Frenzy].Spell}].Stacks} && !${Me.Buff[${FindItem[Jymall's Tunic of Frenzy].Spell}].ID}) /casting "Jymall's Tunic of Frenzy|Item"
downshit8=/if (${Spell[Illusion Benefit Azia Mk. II].Stacks} && !${Me.Buff[Illusion Benefit Azia Mk. II].ID} && ${FindItemCount[=Polymorph Wand: Lightning Warrior]}) /multiline ; /casting "Polymorph Wand: Lightning Warrior"|Item ; /timed 50 /invoke ${Me.Buff[${FindItem[=Polymorph Wand: Lightning Warrior].Spell}].Remove}
downshit9=/if (${FindItemCount[Axe of the Demolisher]}<50 && ${Me.CombatAbilityReady[Axe of the Demolisher]}) /disc Axe of the Demolisher
downshit10=/if (${Cursor.Name.Equal[Axe of the Demolisher]}) /autoinv
holyshit0=/if (${Me.AltAbilityReady[Self Preservation]} && ${Me.PctHPs}<=50 && ${Group.MainTank.ID} != ${Me.ID}) /multiline ; /keypress Esc ; /timed 1 /casting "Self Preservation|Alt"
holyshit1=/if (${Me.CombatAbilityReady[${Spell[Prior Retaliation].RankName}]} && ${Me.PctEndurance}>1 && ${Me.PctHPs} < 90) ${If[${Me.PctHPs}>=90,/multiline ; /alt act ${Me.AltAbility[Bloodfury]} ; /timed 5 /disc ${Spell[Prior Retaliation].RankName},/disc ${Spell[Prior Retaliation].RankName}]}
holyshit2=/if (${Me.AbilityReady[Frenzy]} && ${Me.PctEndurance}>1) /doability Frenzy
holyshit3=/if (${Me.CombatAbilityReady[${Spell[Demolishing Volley].RankName}]} && ${Me.PctEndurance}>1) /doability "${Spell[Demolishing Volley].RankName}"
holyshit4=/if (${Me.CombatAbilityReady[${Spell[Numicia].RankName}]} && ${Me.PctEndurance}>1) /disc ${Spell[Numicia].RankName}
holyshit5=/if (${Me.CombatAbilityReady[${Spell[Demolishing Axe Throw].RankName}]} && ${Me.PctEndurance}>1) /disc ${Spell[Demolishing Axe Throw].RankName}
holyshit6=/if (${Me.CombatAbilityReady[Dichotomic Rage]} && ${Me.PctEndurance} && ${FindItemCount[Axe of the Demolisher]}) /doability "${Spell[Dichotomic Rage].RankName}"
holyshit7=/if (${Target.Fleeing} && ${Me.CombatAbilityReady[${Spell[Tendon Tear].RankName}]} && ${Me.PctEndurance}>1) /disc ${Spell[Tendon Tear].RankName}
holyshit8=/if (${Me.CombatAbilityReady[Cry Carnage]} && !${Me.Song[Cry Carnage].ID} && ${Me.PctEndurance}>1) /disc Cry Carnage
holyshit9=/if (${Me.CombatAbilityReady[Ancient: Cry of Chaos]} && !${Me.Song[Ancient: Cry of Chaos].ID} && ${Me.PctEndurance}>1) /disc Ancient: Cry of Chaos
holyshit11=/if (${Me.CombatAbilityReady[${Spell[Amplified Frenzy].RankName}]} && ${Me.AltAbilityReady[Bloodfury]} && ${Me.CurrentEndurance}>622) ${If[${Me.PctHPs}>=90,/multiline ; /alt act ${Me.AltAbility[Bloodfury]} ; /timed 5 /disc ${Spell[Amplified Frenzy].RankName},/disc ${Spell[Amplified Frenzy].RankName}]}
holyshit12=/if (${Me.CombatAbilityReady[${Spell[Shared Cruelty].RankName}]} && !${Me.Song[Reflected Cruelty].ID} && ${Me.PctEndurance}>1) /disc ${Spell[Shared Cruelty].RankName}
holyshit13=/if (${Me.CombatAbilityReady[${Spell[Demolishing Frenzy].RankName}]} && ${Me.PctEndurance}>1) /disc ${Spell[Demolishing Frenzy].RankName}
holyshit14=/if (${Me.CombatAbilityReady[${Spell[Brutal Discipline].RankName}]} && ${Me.PctEndurance}>1 && !${Me.ActiveDisc.ID} && ${Target.Named}) /disc ${Spell[Brutal Discipline].RankName}
holyshit15=
holyshit16=/if (${Me.AltAbilityReady[Battle Leap]}) /casting "Battle Leap"
holyshit17=/if (${Me.AltAbilityReady[Vehement Rage]} && ${Target.AggroHolder.ID} != ${Me.ID}) /casting "Vehement Rage|Alt"
holyshit18=/if (${Me.AltAbilityReady[Silent Strikes]} && ${Target.AggroHolder.ID} == ${Me.ID} && !${Group.MainTank.ID} != ${Me.ID}) /casting "Silent Strikes|Alt"
holyshit19=/if (${Me.AltAbilityReady[Blinding Fury]}) /casting "Blinding Fury"
holyshit20=/if (${Me.AltAbilityReady[Desperation]} && ${Target.Named}) /casting "Desperation"
holyshit21=/if (${Me.AltAbilityReady[Juggernaut Surge]} && ${Target.Named}) /casting "Juggernaut Surge"
holyshit22=/if (${Me.AltAbilityReady[Reckless Abandon]} && ${Target.Named} && ${Target.AggroHolder.ID} != ${Me.ID} && ${Me.CurrentHPs} > 15000) /casting "Reckless Abandon"
holyshit23=/if (${Me.AltAbilityReady[Savage Spirit]} && ${Target.Named} && ${Target.AggroHolder.ID} != ${Me.ID} && ${Me.PctHPs} > 65) /casting "Savage Spirit"
holyshit24=/if (${Me.AltAbilityReady[Uncanny Resilience]} && ${Target.AggroHolder.ID} == ${Me.ID} && ${Me.PctHPs} < 50 || ${Me.AltAbilityReady[Uncanny Resilience]} && ${Target.Named}) /casting "Uncanny Resilience"
holyshit25=/if (${Me.AltAbilityReady[Untamed Rage]} && ${Target.AggroHolder.ID} != ${Me.ID} && ${Me.CurrentHPs} > 50000) /casting "Untamed Rage"
holyshit26=/if (${Me.AltAbilityReady[Rampage]} && ${SpawnCount[NPC Radius 50]}>1 && ${Me.PctEndurance}>1) /casting "Rampage|Alt"
holyshit27=/if (${Me.CombatAbilityReady[${Spell[Breather].RankName}]} && !${Me.CombatState.Equal[COMBAT]} && ${Me.PctEndurance}<21) /disc ${Spell[Breather].RankName}
holyshit28=/if (${Me.CombatAbilityReady[${Spell[Bubbling Rage].RankName}]} && !${Me.Song[Bubbling Rage].ID} && ${Me.PctEndurance}>1) /disc ${Spell[Bubbling Rage].RankName}
[2018/04/02 17:08:45] MQ2Melee::-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
[2018/04/02 17:08:45] MQ2Melee::Version [8.600] Loaded!
[2018/04/02 17:08:45] MQ2Melee::-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
[2018/04/02 17:08:45] MQ2Melee::-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
[MQ2Melee]
aggro=1
banestrike=1
bash=1
callchallenge=1
commanding=20
defense=20
disarm=1
enrage=1
facing=1
fieldarm=20
gutpunch=1
infuriate=1
kick=1
kneestrike=1
melee=1
opportunisticstrike=20
plugin=1
provoke1=43035
provokeend=20
provokemax=1
provokeonce=0
rallos=0
resume=75
slam=1
stickmode=1
stickrange=0
taunt=1
stickcmd=${If[${Math.Calc[${Target.MaxRangeTo}*0.8]} > 19,15,${Math.Calc[${Target.MaxRangeTo}*0.8]}]} hold moveback front loose
version=8.500
/melee plugin=1
downflag1=1
downshit1=/if (${Me.Gem[${Twist.Current}].Skill.Equal[Stringed Instruments]} && ${Me.Inventory[14].ID}!=147411) /squelch /exchange 147411 offhand
downflag2=1
downshit2=/if (${Me.Gem[${Twist.Current}].Skill.Equal[Wind Instruments]} && ${Me.Inventory[14].ID}!=147413) /squelch /exchange 147413 offhand
downflag3=1
downshit3=/if (${Me.Gem[${Twist.Current}].Skill.Equal[Percussion Instruments]} && ${Me.Inventory[14].ID}!=127295) /squelch /exchange 127295 offhand
downshit4=/if (${Me.Gem[${Twist.Current}].Skill.Equal[Singing]} && ${Me.Inventory[14].ID}!=148149 /squelch /exchange 148149 offhand
holyshit0=/if (${Me.Inventory[offhand].ID}!=148149 && ${Me.Combat}
downflag1=1
downshit1=/if (${Me.Gem[${Twist.Current}].Skill.Equal[Stringed Instruments]} && ${Me.Inventory[14].ID}!=147411) /squelch /exchange 147411 offhand
downflag2=1
downshit2=/if (${Me.Gem[${Twist.Current}].Skill.Equal[Wind Instruments]} && ${Me.Inventory[14].ID}!=147413) /squelch /exchange 147413 offhand
downflag3=1
downshit3=/if (${Me.Gem[${Twist.Current}].Skill.Equal[Percussion Instruments]} && ${Me.Inventory[14].ID}!=127295) /squelch /exchange 127295 offhand
downflag4=1
downshit4=/if (${Me.Inventory[14].ID}!=148149) /exchange 148149 offhand
downshit4=/if (!${Me.Gem[${Twist.Current}].Skill.Equal[Stringed Instruments]} && !${Me.Gem[${Twist.Current}].Skill.Equal[Wind Instruments]} && !${Me.Gem[${Twist.Current}].Skill.Equal[Percussion Instruments]} && ${Me.Inventory[offhand].ID}!=148149 && ${Me.Combat}) /squelch /exchange 148149 offhand
How about putting a check in that X skill it not needed?
Rich (BB code):downshit4=/if (!${Me.Gem[${Twist.Current}].Skill.Equal[Stringed Instruments]} && !${Me.Gem[${Twist.Current}].Skill.Equal[Wind Instruments]} && !${Me.Gem[${Twist.Current}].Skill.Equal[Percussion Instruments]} && ${Me.Inventory[offhand].ID}!=148149 && ${Me.Combat}) /squelch /exchange 148149 offhand
I haven't tested this but it ought to be close
Possible to have unlimited setups. Would have to keep the alternate profiles in a different file, then swap it in (and other out) for different circumstances. Changes take effect by reloading MQ2melee afterwords.
we came up with a few good solutions on discord. You could write a quick macro that reads the custom ini, sets melee variables and saves it. Or you could just have a bunch of holyshits with highly situational conditions (which solved @Sum1's specific problem.)I haven't run into a way to load other ini files. You could write a batch file that swaps your ini files, or some multi-line hotkeys that change the /melee settings but don't save for next time.
we came up with a few good solutions on discord. You could write a quick macro that reads the custom ini, sets melee variables and saves it. Or you could just have a bunch of holyshits with highly situational conditions (which solved @Sum1's specific problem.)
/if (!${Me.Buff[crackofchoice].ID} && ${Me.Spell[crackofchoice].Mana} > ${Me.CurrentMana} && ${Me.SpellReady[crackofchoice]} && !${Me.Moving}) /casting crackofchoice
so this is if I dont have "crackofchoice" and I have more than enough mana to cast the spell and its ready to cast and you are not moving, to go ahead and cast the buff on your self.
downshit1=/if (${Cast.Ready[Cauldron of Countless Goods]} && !${Me.Invis} && !${Me.Casting.ID} && !${Me.Moving} && ${MacroQuest.GameState.Equal[INGAME]} && !${Me.CombatState.Equal[COMBAT]}) /casting "Cauldron of Countless Goods" item
@s0rcier I would give you what I have, but I am sure it is too old. I am the one who added the Generic Holy/down and increased holy/downs to 60 I think it was... Maskoi should have a recent copy and/or redbot for sure will have a current copy.
Mana Repetition Aura Rk. III
Hastening of Milyex Rk. III
Voice of Perspicacity Rk. III
Shield of Order Rk. III
downshitif=${If[!${Me.Invis} && ${Me.Standing} && ${Melee.Immobilize} && !${Me.Moving} && !${Cast.Timing} && ${Cast.Ready[]} && ${Me.PctMana}>30,1,0]}
downshit0=/if (${Me.Buff[Hastening of Milyex Rk. III].Duration} < 100 && ${Cast.Ready[Hastening of Milyex Rk. III|gem]} && ${Spell[Hastening of Milyex Rk. III].Stacks}) /casting "Hastening of Milyex Rk. III|gem"
downshit1=/if (${Me.Buff[Voice of Perspicacity Rk. III].Duration} < 100 && ${Cast.Ready[Voice of Perspicacity Rk. III|gem]} && ${Spell[Voice of Perspicacity Rk. III].Stacks}) /casting "Voice of Perspicacity Rk. III|gem"
downshit2=/if (${Me.Buff[Shield of Order Rk. III].Duration} < 100 && ${Cast.Ready[Shield of Order Rk. III|gem]} && ${Spell[Shield of Order Rk. III].Stacks}) /casting "Shield of Order Rk. III|gem"
downshit3=/if (!${Me.Song[Mana Repetition III].ID} && ${Cast.Ready[Mana Repetition Aura Rk. III|gem]} && ${Spell[Mana Repetition Aura Rk. III].Stacks}) /casting "Mana Repetition Aura Rk. III|gem"
downflag0=1
downflag1=1
downflag2=1
downflag3=1
s0rcier trying to make mq2melee great again! yay.
Out of curiousity how often does mq2melee try to apply the stickcmd when stickmode is set to 1? I've always wondered about this as background toons sometimes seem to stick into place, but then just kind of fight and move away from what should be their placement.
very offten if your stick command is off since it detect you are not sticking it send the command again!
INI:downshitif=${If[!${Me.Invis} && ${Me.Standing} && ${Melee.Immobilize} && !${Me.Moving} && !${Cast.Timing} && ${Cast.Ready[]} && ${Me.PctMana}>30,1,0]} downshit0=/if (${Me.Buff[Hastening of Milyex Rk. III].Duration} < 100 && ${Cast.Ready[Hastening of Milyex Rk. III|gem] && ${Spell[Hastening of Milyex Rk. III].Stacks}) /casting "Hastening of Milyex Rk. III|gem" downshit1=/if (${Me.Buff[Voice of Perspicacity Rk. III].Duration} < 100 && ${Cast.Ready[Voice of Perspicacity Rk. III|gem] && ${Spell[Voice of Perspicacity Rk. III].Stacks}) /casting "Voice of Perspicacity Rk. III|gem" downshit2=/if (${Me.Buff[Shield of Order Rk. III].Duration} < 100 && ${Cast.Ready[Shield of Order Rk. III|gem] && ${Spell[Shield of Order Rk. III].Stacks}) /casting "Shield of Order Rk. III|gem" downshit3=/if (!${Me.Song[Mana Repetition III].ID} && ${Cast.Ready[Mana Repetition Aura Rk. III|gem] && ${Spell[Mana Repetition Aura Rk. III].Stacks}) /casting "Mana Repetition Aura Rk. III|gem" downflag0=1 downflag1=1 downflag2=1 downflag3=1
1st i would make a global downshitif= to only attempt to cast anything while not invis, when you are standing, immobilized for long enough, not currently moving, and that their is no casting going and that you can cast right now and that you have your 30% mana .... i would not be using ${Me.CombatState.Equal[ACTIVE]} if you are mouted, you can still cast and status will change to RESTING i beleive.
your 3 buffs, should recast when their are not on self or when duraction left is less then 10min (on emu server, u will need to change the 100 for the appropriate value on the live servers.... Im not 100% sure for the stacking parameters Stacks[0] Stacks[20] i really never used that lol but give them a try
for Mana Repetition Aura Rk. III ... im not sure, totally a shot in the dark... i assume it will put a songs buff on self named Mana Repetition III ... that last 18secs... and im not ure you need to do a stacking test for that... give them a shoot and let me know! im not playing on live! so can't test any of those!
2019-01-28: Updated by s0rcier down/holyflag=3 parse when no macro running. increase down/holy shits to 90. stickmode=2 (disable sticking)
2019-02-01: Updated Immobile flags to return false for a litte after being summoned