• 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

Problem - Automatic removal of polymorph buff triggers

Status
Not open for further replies.

Lucent

Member
Joined
Jul 16, 2010
RedCents
35¢
Hi guys, back around and messing about on eq again so here I am as well.

Found something that would surely be useful to some while setting up my ini files again.

My SK uses the Polymorph: Plaguebringer wand (which provides mana regen and damage shield). Now IIRC I'm pretty sure kiss already checks to make sure a buff will even stack before casting to prevent loops, but that isn't an issue here.

Now with some items that provide an illusion and a buff you can block the illusion and write the buff on your ini as a |DUAL| buff and it works fine with the actual illusion component BLOCKED, but with some things like this petamorph wand, you cant do that because the illusion component actually TRIGGERS the buff component

-Spell: Illusion: Plaguebringer-
Slot 1: Illusion: Human
Slot 2: Trigger Spell: (Spell: Essence of Bertoxxulous)

I want to keep essence of bertoxxulous without wasting a buff slot on the illusion, but if i block the illusion I cant get the buff.

So far just doing it manually, but the idea here is kiss handling all your buffages and such.

Perhaps adding another buff modifier that would remove any buff effect stated after it automatically

Buffs1=Polymorph Wand: Plaguebringer|DUAL|Essence of Bertoxxulous|Me|Remove|Illusion: Plaguebringer

With the plethora of items available now providing illusions that trigger buffs, rather than two separate buffs, this would probably be very useful to a lot of people.
 
Last edited by a moderator:
perhaps a more simple one would be using a |Polymorph| tag along the lines of dual. while you could use it without it, using the tag would tell kiss to remove the initial buff illusion

Buffs1=Polymorph Wand: Plaguebringer|Polymorph|Essence of Bertoxxulous|Me

Or something. I'm sure there are none polymorph wand effects like this out there
 
well TECHNICALLY i'm not sure thats more simple than mine if you have to use two lines :3

But a two line system would work with anything as long as the remove buff info is down farther on the buff list of the ini :D
 
I use the Dual tag and block the illusions:

Rich (BB code):
Bloodmetal Inlaid Gnollish Totem|Dual|Gnoll Reaver Fortitude
Rhyan's Horse Saddle|Dual|Mount Blessing Beza
Gunthak Swabby's Eyepatch|Dual|Gunthak Fortitude
 
Please read first post haha - that doesn't work with polymorph illusions because the illusion itself TRIGGERS the buff. So if you block the illusion, the buff never happens.
Spell: Illusion
slot 1: Illusion XYZ
slot2: Trigger Spell: XYZ Buff

Spell: Buff
Slot1: Awesome effect

If you block "Spell: Illusion" of this type, you will never ever get "Spell: Buff" that you want.
 
Gotcha... so can you make a downflag to remove the buff?

Rich (BB code):
downshit1=/if (${Me.Buff[Illusion: Plaguebringer].ID} && ${Illusion: Plaguebringer].ID}) /clickoff Illusion: Plaguebringer

Not sure what is the exact syntax for clicking/removing the buff.
 
I was thinking of having a setup similar to dual format... where you list arg1 as the name of the spell to cast, arg2 as the buff name to maintain.. if different from the actual spell name (like normal DUAL) and an additional arg3 as the secondary buff or effect you wish to drop.. keyname being remove.

example:

Spell name: Illusion of the Hermit
Buff effect name: Illusion: Dirty Old Hermit
Secondary buff effect to drop: Dirty Old Hermit's Stench

Buff01=Illusion of the Hermit|Dual|Illusion: Dirty Old Hermit|Remove|Dirty Old Mermit's Stench
 
Its just going to be
Rich (BB code):
Buff01=Dirty Old Mermit's Stench|Remove

That's simple bossman... and fine and dandy.. i was under the mistaken impression that we wanted to drop a secondary buff or procced buff from an initial spell cast and drop one of the two unwanted buffs.

Simple drop removal makes sense now.. lol
 
Just go to Sub CheckBuffs and find this section of code and add the highlighted lines.

Rich (BB code):
            /if (${Buffs[${i}].Arg[2,|].Length}) {
                /varset FullText ${Buffs[${i}]}
                /varset 1stPart ${Buffs[${i}].Arg[1,|]}
                /varset 2ndPart ${Buffs[${i}].Arg[2,|]}
                /varset 3rdPart ${Buffs[${i}].Arg[3,|]}
                /varset 4thPart ${Buffs[${i}].Arg[4,|]}
                /if (${FullText.Arg[2,|].Equal[Mana]})      /varset 2ndPart Mana
                /if (${FullText.Arg[2,|].Equal[Aura]})      /varset 2ndPart Aura
                /if (${FullText.Arg[2,|].Equal[Mount]})     /varset 2ndPart Mount
                /if (${FullText.Arg[2,|].Equal[Dual]})      /varset 2ndPart Dual
                /if (${FullText.Arg[2,|].Equal[Me]})        /varset 2ndPart Me
                /if (${FullText.Arg[2,|].Equal[MA]})        /varset 2ndPart MA
                /if (${FullText.Arg[2,|].Equal[!MA]})       /varset 2ndPart !MA
                /if (${FullText.Arg[2,|].Equal[Summon]})    /varset 2ndPart Summon
                /if (${FullText.Arg[2,|].Equal[End]})       /varset 2ndPart End
                /if (${FullText.Arg[2,|].Equal[Melee]})     /varset 2ndPart Melee
                /if (${FullText.Arg[2,|].Equal[Caster]})    /varset 2ndPart Caster
                /if (${FullText.Arg[2,|].Equal[Remove]})    /varset 2ndPart Remove
                /if (${FullText.Arg[2,|].Equal[Dual]} && ${4thPart.Equal[MA]}) /varset 2ndPart DualMA
                /varset SpellRange ${Spell[${1stPart}].Range}
            } else {
                /varset 1stPart ${Buffs[${i}]}
                /varset SpellRange ${Spell[${Buffs[${i}]}].Range}
            }
             /if (${DebugBuffs}) /echo DEBUGBUFFS ${1stPart} ${2ndPart} ${3rdPart} ${4thPart}
            /if (${Me.Book[${1stPart}]}) /varset  BookSpellTT ${Spell[${Me.Book[${Me.Book[${1stPart}]}].ID}].TargetType}
            /if (${BookSpellTT.Find[0]} && ${Spell[${Buffs[${i}]}].TargetType.Find[Group]} || ${BookSpellTT.Find[group]})  /varset SpellRange ${Spell[${Buffs[${i}]}].AERange}
            /if (${Spell[${Buffs[${i}]}].TargetType.Find[Group]})  /varset SpellRange ${Spell[${Buffs[${i}]}].AERange}
            /if (!${SpellRange}) /varset SpellRange 100
            /if (${DebugBuffs}) /echo DEBUGBUFFS CheckBuffs ${i} 1stPart: ${1stPart} 2ndPart: ${2ndPart} FullText: ${Buffs[${i}]} Type: ${Spell[${1stPart}].TargetType}
            /if (${AggroTargetID} || ${CombatStart} || ${IAmDead} || ${ReadBuffsTimer}) /goto :SkipBuff
            /if (${HealsOn}) /call CheckHealth
            /if (${2ndPart.Equal[Remove]} && ${Me.Buff[${1stPart}].ID}) {
               /removebuff ${1stPart} 
               /goto :SkipBuff
            }
            | If buff cost more mana than I have skip it
 
OMG stop copying my code. lol

I am so good at macro writing now Kiss practically writes itself magically appearing in related posts.
 
Could also use a downshit to do it.
Something like...
Rich (BB code):
Downflag9=1
Downshit9=/if (Me.Buff[wtfeverbuffyouwantclickedoff]) /nomodkey /notify BuffWindow Buff${Math.Calc[${Me.Buff[wtfeverbuffyouwantclickedoff]}-1].Int} leftmouseup
 
You forgot to close a bracket, and having /removebuff and goto on seperate lines made it crash. I was able to fix that but it still didn't work.. took a while but...

I FIGURED IT OUT! (with much help pointing me the right way

We may now remove buffs without blocking them (this may be useful for more than just polymorph illusions, if they have ever (or in the future) add effects you dont want to block but want to remove manually, say an effect that happens when a buff is removed but doesnt' require it to fade naturally.

@ctaylor22 What still had it hanging up was /goto :SkipBuff , which probably made it hangup as a second command after the /if, but more importantly it is unnecessary - we dont want to skip the buff, we want to do something to it - after which point the macro continues on down the line. To make sure it didn't hang up I put my polymorph slot in buff1, illusion|remove in buff2, and my clicky buffs in buff3 and beyond and clicked off ALL buffs. KA used polymorph and then removed the illusion, and continued to buff the rest of my buffs without a hang.

I hope this is useful for folks!

Rich (BB code):
/if (${FullText.Arg[2,|].Equal[Mana]})      /varset 2ndPart Mana
                /if (${FullText.Arg[2,|].Equal[Aura]})      /varset 2ndPart Aura
                /if (${FullText.Arg[2,|].Equal[Mount]})     /varset 2ndPart Mount
                /if (${FullText.Arg[2,|].Equal[Dual]})      /varset 2ndPart Dual
                /if (${FullText.Arg[2,|].Equal[Me]})        /varset 2ndPart Me
                /if (${FullText.Arg[2,|].Equal[MA]})        /varset 2ndPart MA
                /if (${FullText.Arg[2,|].Equal[!MA]})       /varset 2ndPart !MA
                /if (${FullText.Arg[2,|].Equal[Summon]})    /varset 2ndPart Summon
                /if (${FullText.Arg[2,|].Equal[End]})       /varset 2ndPart End
                /if (${FullText.Arg[2,|].Equal[Melee]})     /varset 2ndPart Melee
                /if (${FullText.Arg[2,|].Equal[Caster]})    /varset 2ndPart Caster
		/if (${FullText.Arg[2,|].Equal[Remove]})    /varset 2ndPart Remove
                /if (${FullText.Arg[2,|].Equal[Dual]} && ${4thPart.Equal[MA]}) /varset 2ndPart DualMA
                /varset SpellRange ${Spell[${1stPart}].Range}
            } else {
                /varset 1stPart ${Buffs[${i}]}
                /varset SpellRange ${Spell[${Buffs[${i}]}].Range}
            }
             /if (${DebugBuffs}) /echo DEBUGBUFFS ${1stPart} ${2ndPart} ${3rdPart} ${4thPart}
            /if (${Me.Book[${1stPart}]}) /varset  BookSpellTT ${Spell[${Me.Book[${Me.Book[${1stPart}]}].ID}].TargetType}
            /if (${BookSpellTT.Find[0]} && ${Spell[${Buffs[${i}]}].TargetType.Find[Group]} || ${BookSpellTT.Find[group]})  /varset SpellRange ${Spell[${Buffs[${i}]}].AERange}
            /if (${Spell[${Buffs[${i}]}].TargetType.Find[Group]})  /varset SpellRange ${Spell[${Buffs[${i}]}].AERange}
            /if (!${SpellRange}) /varset SpellRange 100
            /if (${DebugBuffs}) /echo DEBUGBUFFS CheckBuffs ${i} 1stPart: ${1stPart} 2ndPart: ${2ndPart} FullText: ${Buffs[${i}]} Type: ${Spell[${1stPart}].TargetType}
            /if (${AggroTargetID} || ${CombatStart} || ${IAmDead} || ${ReadBuffsTimer}) /goto :SkipBuff
            /if (${HealsOn}) /call CheckHealth
            /if (${2ndPart.Equal[Remove]} && ${Me.Buff[${1stPart}].ID}) /RemoveBuff ${1stPart}
             
			   | If buff cost more mana than I have skip it
 
Not sure why the /goto would hang up the loop because the /goto :SkipBuff just tells it to skip to the next buff. After removing the buff there is nothing else to do so skip to next buff.

This code should work and it is more efficient you don't want to let it drop through the rest of the code when none of the code below it needs to execute.

Rich (BB code):
            /if (${2ndPart.Equal[Remove]} && ${Me.Buff[${1stPart}].ID}) {
               /removebuff ${1stPart} 
               /goto :SkipBuff
            }

I am glad this was helpful, but you need to try and fit that /goto back in like I had it. If I get a chance I will do some testing.
 
After removing the buff there is nothing else to do so skip to next buff.

From my understanding piecing together the script in that part of the Macro, all those if statements are telling it reasons to skip that buff its checking and move on ... like if you're dead or in combat. We dont need to skip the buff, we just need it to do something to the buff slot other than cast one. MQ2/the script keeps moving down through each buff slot regardless, but the /goto :SkipBuff is simply telling it 'you have nothing to do on this slot, so don't try to cast anything'. In this case, we're giving it something to do. At which point its automatically going to keep going down the line and finish the checkbuffs subroutine.

But if its actually going through all the following code. welp.. Not sure haha. But it wasn't working before.

Thats what I gleaned from it anyway, and I could be wrong, my knowlege here is limited. But.. as soon as I took the second command off the line (/goto) it worked absolutely fine, been running it ever since, smoothly.

- - - Updated - - -

Ok the new code is working along with the skip. I guess it was just funkiness with the brackets.

IDC though I'm still proud of myself for getting it working lol
 
The buff sub is one of the one the most complex in Kiss. It does like 50 things.
/goto skipbuff tells kiss to skip the other 49 checks it does once it a condition is met.

/removebuff whatever - done
skip all the other checks by /goto :skipbuff
/next i or next buff
 
I use the Dual tag and block the illusions:

Rich (BB code):
Bloodmetal Inlaid Gnollish Totem|Dual|Gnoll Reaver Fortitude
Rhyan's Horse Saddle|Dual|Mount Blessing Beza
Gunthak Swabby's Eyepatch|Dual|Gunthak Fortitude

this way actually works very well for dual illusions - Being as you get a DUAL buff - illusion and buff it falls under same syntax as a actually dual spell buff - spell ive tested it with steamsuit - works well
 
Final solution (code update/fix) to KissAssist to accomodate buff removal is being incorporated into kissassist 8.2.2 which will be released sometime today.
Ticket being closed and locked at this time.
 
Problem - Automatic removal of polymorph buff triggers
Status
Not open for further replies.

Users who are viewing this thread

Back
Top
Cart