• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Question - why am i so stupid (also, why does stopdisc hate me)

timmy

Well-known member
Joined
Apr 1, 2014
RedCents
1,443¢
INI:
DPS1=command:/stopdisc|100|Cond5

Cond5=(${Me.ActiveDisc.ID} && ${Me.ActiveDisc.Name.NotEqual[${Spell[Culminating Stand Discipline].RankName}]} && ${Target.Level}>=${Me.Level}+4) || (${Me.ActiveDisc.ID} && ${Me.ActiveDisc.Name.NotEqual[${Spell[Culminating Stand Discipline].RankName}]} && ${Me.XTarget} > 3)

the above works. perfectly. does exactly what i expect it to do every time. i'm sure stole most of it from sic, or denethor, or maybe sa_krycek. i've stolen stuff from all three of these wonderful people at some point, so thanks and thumbs up for that.

now i want use this same stopdisc command on a monk (and, possibly, to incorporate more disc usage into the warrior). the problem is that the war cond above only checks for one disc. for a monk, i want it to check for 4.

i've tried dozens (honestly, dozens) of different ways to get this to work and i always end up the captain of the good ship failure.

i use monk disc eye of the storm if i'm not fighting multiples or a named. so i tried using a condition that was roughly what is below: (i should have saved all the fail examples, but i would need a bigger HD)

INI:
${Me.ActiveDisc.Name.Equal[${Spell[Eye of the Storm].RankName}]} && (${Target.Level}>=${Me.Level}+4 || ${Me.XTarget} > 1})

no luck. for the record, i removed the [$(Spell and .RankName from the disc name too and tried that because all the searching i did never had an Name.Equal formatted the way the functioning .NotEqual was.

so then i tried to just check by what discs i didn't want to cancel:

INI:
(${Me.ActiveDisc.ID} && (${Target.Level}>=${Me.Level}+4 || ${Me.XTarget} > 1})) && (${Me.ActiveDisc.Name.NotEqual[${Spell[Heel of Zagali].RankName}]} || ${Me.ActiveDisc.Name.NotEqual[${Spell[Terrorpalm Discipline].RankName}]} || ${Me.ActiveDisc.Name.NotEqual[${Spell[Ironfist Discipline].RankName}]} || ${Me.ActiveDisc.Name.NotEqual[${Spell[Speed Focus Discipline].RankName}]})

no luck. it's possible some of my formatting above has errors in it because i'm just recreating these off the top of my head, but i assure you, i double and triple checked and then checked again for syntax errors. or thought maybe my nested conditionals were wrong. dozens, and i mean dozens of different configurations with as many failures. totally possibly it was a syntax error, but i'm convinced i'm going about this the wrong way entirely.

so i'm stuck. the closet i've gotten is canceling any disc that was running if i had a target 4 levels higher than me or 2 or more mobs on xtarget. but that is just silly. i'd cancel eye, start heel, then cancel that and go into terror. rage and frustration would follow shortly after.

what i want to do is basically what's in code block 2 above. cancel my disc if it's eye of the storm and there is either a named i'm fighting or i have multiples on xt. i can't translate that into code, for whatever reason, mostly because i'm stupid.

these conditions below for the discs work. these have all been tested in other ways so i don't believe there is a typo here:

INI:
${Me.ActiveDisc.Name.NotEqual[${Spell[Eye of the Storm].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Heel of Zagali].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Terrorpalm Discipline].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Ironfist Discipline].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Speed Focus Discipline].RankName}]})

i'm stumped at this point. i'd like to this work for my monk but i'd also like to change my warrior up so he would use dps discs instead of defaulting to culminating and resolute. but i'm not sure how to limit or focus canceling discs unless it's exactly like the warrior example in code block 1.

if the answer is i need to create 4 different conditions for 4 different calls of stopdisc, then i can do that, but i'm guessing there has to be a more elegant solution. and i'm not sure how that would work with a warrior wanting to cancel resolute if he had multiple mobs in camp so that he wanted to use mighty, but not so many that he wanted to use culminating. ugh!

so ... who has time and inclination to point out my failings? i'd sincerely appreciate it.
 
Well at first glance I think you need to change ${Me.Level}+4 to ${Math.Calc[${Me.Level}+4]} or at the least put it inside ()

Next are you wanting do something if the disc that is up is not one of the following:


INI:
${Me.ActiveDisc.Name.NotEqual[${Spell[Eye of the Storm].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Heel of Zagali].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Terrorpalm Discipline].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Ironfist Discipline].RankName}]}
${Me.ActiveDisc.Name.NotEqual[${Spell[Speed Focus Discipline].RankName}]})

If so you should use ${Me.ActiveDisc.Name.NotEqual[${Spell[Eye of the Storm].RankName}]} && ${Me.ActiveDisc.Name.NotEqual[${Spell[Heel of Zagali].RankName}]} && ...

Not ||(or)
 
Side question for @ctaylor22 : Is there a max length for a condition in KA?

This one below may just have a straight up error such as brackets, but I also ran into a non-usable condition when i was trying to get my SK to swap out of a DPS active combat disc to pop a defensive one. I wound up giving up and removing this, but couldn't figure out why it didn't work. I suspected I'd maybe gone over the length limit.
INI:
//Named/AE(3+) - Should we drop a weak "disc" to replace with an available defensive one?

Cond11=(${Me.XTarget}>=3 || ${Target.Named}) && !${Me.Buff[Reaver's Bargain].ID} && (${Me.ActiveDisc.Name.Equal[Unholy Aura Discipline]} || ${Me.ActiveDisc.Name.Equal[${Spell[Spite of Kra`Du].RankName}]}) && (${Me.CombatAbilityReady[${Spell[Krellnakor Mantle].RankName}]} || ${Me.CombatAbilityReady[${Spell[Tylix's Carapace].RankName}]} || ${Me.CombatAbilityReady[${Spell[Cursed Guardian Discipline].RankName}]} || ${Me.CombatAbilityReady[Deflection Discipline]} || ${Me.AltAbilityReady[Reaver's Bargain]})

Edit: same code but with text wrap around:
Cond11=(${Me.XTarget}>=3 || ${Target.Named}) && !${Me.Buff[Reaver's Bargain].ID} && (${Me.ActiveDisc.Name.Equal[Unholy Aura Discipline]} || ${Me.ActiveDisc.Name.Equal[${Spell[Spite of Kra`Du].RankName}]}) && (${Me.CombatAbilityReady[${Spell[Krellnakor Mantle].RankName}]} || ${Me.CombatAbilityReady[${Spell[Tylix's Carapace].RankName}]} || ${Me.CombatAbilityReady[${Spell[Cursed Guardian Discipline].RankName}]} || ${Me.CombatAbilityReady[Deflection Discipline]} || ${Me.AltAbilityReady[Reaver's Bargain]})
 
Last edited:
@eqtrader74 Whatever is the max length of a string variable would be the limit on a condition.

You might be able to get around that limit by including Condition entries in your conditions. WHAT!!!! I am not going to get too technical but here is an example:

Old Condition:

Cond1=${Me.Sitting} && ${Me.Combat}

New Condition(s):
Cond1=${Me.Sitting}
Cond2=${Me.Combat}
Cond3=${Cond[1]} && ${Cond[2]}

I hope this doesn't get out into the wild.
 
@eqtrader74 Whatever is the max length of a string variable would be the limit on a condition.

You might be able to get around that limit by including Condition entries in your conditions. WHAT!!!! I am not going to get too technical but here is an example:

Old Condition:

Cond1=${Me.Sitting} && ${Me.Combat}

New Condition(s):
Cond1=${Me.Sitting}
Cond2=${Me.Combat}
Cond3=${Cond[1]} && ${Cond[2]}

I hope this doesn't get out into the wild.

Ummmmm. I’m kind of speechless right now - you can make a condition that calls other conditions.....holy hell man.I never even thought about that. You’re a genius and stuff!
 
That may circumvent it a bit, but if your results are over the limit you're still going to have problems. Both parsers will truncate (though you should get something in your window telling you that).

Condition nesting is good for organization, though.
The limit is 2048 characters on a macro line. So the limit is going to be where that check is called.

That said, if you have 2048 characters in conditions you're probably writing your own macro in an ini file~
 
Question - why am i so stupid (also, why does stopdisc hate me)

Users who are viewing this thread

Back
Top
Cart