• 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 - Is there a way to really mash something?

Joined
Mar 24, 2018
RedCents
5,569¢
I have a Manastone which needs really clicking quickly over and over to generate any mana. In KA I tried having it with |Mash and another one with |Weave and that seems to be working. But it only casually clicks it a few times between casts, it's no way near aggressive enough. I tried having mq2react do it and that thing spams the hell out of it! It is amazing. But that spams it too hard and it interrupts KA's ability to cast spells and especially buffs. Even with !${Me.Casting.ID} as a condition it still seems to interrupt things.

So without React I just have KA. Hoping there is some way I can set that up to really mash it? I heard mlem might be best of all but I don't know Lua so that's too much for me.
 
I can make a mean BBQ but writing anything for this game is Greek to me. Just some food for thought. Look at existing ini's and conditions. I am pretty sure you could incorporate a mana stone in there. For example, mod rods are used at "x" percentage of mana and I bet there's a way to priotize use.
 
I have a Manastone which needs really clicking quickly over and over to generate any mana. In KA I tried having it with |Mash and another one with |Weave and that seems to be working. But it only casually clicks it a few times between casts, it's no way near aggressive enough. I tried having mq2react do it and that thing spams the hell out of it! It is amazing. But that spams it too hard and it interrupts KA's ability to cast spells and especially buffs. Even with !${Me.Casting.ID} as a condition it still seems to interrupt things.

So without React I just have KA. Hoping there is some way I can set that up to really mash it? I heard mlem might be best of all but I don't know lua so that's too much for me.
Can always run a Lua script on the side for it.
 
I got it working in mLEM! But I find that it still just mashes it too hard for KA to do anything, same as with MQ2React it mashes quickly but without any breaks the caster doesn't get a chance to do anything. Anyone know a solution to this? I tried putting in some delays but that doesn't really help.

This is what I have so far:

Lua:
local mq = require('mq')
local function condition()
    return not mq.TLO.Me.Casting() and
        mq.TLO.Me.PctHPs()>80 and
        mq.TLO.Me.PctMana()<99 and
        not mq.TLO.Me.Invis() and
        mq.TLO.Group.Member(mq.TLO.Group.Leader.CleanName()).PctHPs () > 89
end
local function action()
    mq.cmd('/useitem "Manastone"')
    mq.delay(550)
    mq.cmd('/useitem "Manastone"')
end
return {condfunc=condition, actionfunc=action}
 
I got it working in mLEM! But I find that it still just mashes it too hard for KA to do anything, same as with MQ2React it mashes quickly but without any breaks the caster doesn't get a chance to do anything. Anyone know a solution to this? I tried putting in some delays but that doesn't really help.

This is what I have so far:

Lua:
local mq = require('mq')
local function condition()
    return not mq.TLO.Me.Casting() and
        mq.TLO.Me.PctHPs()>80 and
        mq.TLO.Me.PctMana()<99 and
        not mq.TLO.Me.Invis() and
        mq.TLO.Group.Member(mq.TLO.Group.Leader.CleanName()).PctHPs () > 89
end
local function action()
    mq.cmd('/useitem "Manastone"')
    mq.delay(550)
    mq.cmd('/useitem "Manastone"')
end
return {condfunc=condition, actionfunc=action}
without allowing the automation that is automating stuff to handle when/where stuff happens you're going to run into conflicts.

you can't cast more than 1 thing at a time (unless you're a weirdo bard) so kiss isn't going to try and cast while you're casting something else.

this use case is pretty niche - what i would end up doing - just spitballing, as there are a ton of different approaches to this problem - would be having a Lua utility with a bind like "/manastone" and that would call the function with a counter, to smash the manastone 5 times (or however many)

this example is in dps, you'd need one in buffs as well for out of combat
INI:
Dpson=2
dps1=command:/manastone|99|cond1
cond1=${Me.PctHps} > 80 && ${Me.PctMana} < 99 && ${Group.MainTank.PctHPs} > 89 && !${Me.Invis}

inside the full-time running Lua script has the bind and the bind action to spam the manastone thing for either a: a counter of times or b: a timed amount of times and then stop.

this would mean kiss would check to do this first, and fire of the Lua aggressively for a "burst" every time it cycles to check to do it
(incoming untested likely badcode - but hopefully an idea)
Lua:
local mq = require("mq")

local function bind_manastone()
    for i=0, 5 do
        mq.cmd('/useitem "Manastone"')
        mq.cmd('/useitem "Manastone"')
        mq.delay(1000)
    end
end

local function setup()
    mq.bind('/manastone', bind_manastone)
end

local function main()
    while true do
        mq.delay(500)
    end
end

-- set it the bind and such
setup()
-- run the main loop
main()
 
Whenever I run a wait-loop, I combine it with doevents like:

[CODE title="wait til cast is finished"]
while mq.TLO.Me.Casting() do
mq.doevents()
mq.delay(50)
end
[/CODE]

My understanding is, that doevents() will allow to check if there are other dutys which need attention and some processor-time, which shall allow to keep things not attached to this codesnipped(or event in this case) to be processed and run smooth



if the delay(550) in your action is the cooldown time for your manastone you may find the syntax which allopws you to recognize if your manastone is rady again and instead to set this long cooldown you call a loop:

[CODE title="Mod for Manastone"]
local function LoopManastoneReady()
while mq.TLO.Manastone.readytoclick do -- not the right syntax! here you need to find the right syntax
mq.doevents()
mq.delay(50)
end
end

local function action()
mq.cmd('/useitem "Manastone"')
LoopManastoneReady() -- not a "hard" delay, instead a waitloop with integrated doevents()
mq.cmd('/useitem "Manastone"')
end
[/CODE]

My guess is, that that will do what you are looking for.

I used this doevents() in my multiclass - shei vintras event.
This made this event do all the banishing needed and allowed i.e. the cleric (ctwn-plugin) to do all the curing and healing needed, or the bard (Kissassist) to run his melody while on the banish-duty.
All luas i tried b4, when cleric was on duty, I had to keep a close eye when it was time to cure this dt-stuff, when bard was on duty for banishing, the melody came to a halt.
 
Last edited:
Thanks guys still working on this, I am getting closer but the syntax is tricky for me.

In the meantime I found a way to help Kiss do it some more. I noticed I can just copy the weave line. I didn't wanna overdo it but this seemed to work pretty well:

DPS1=manastone|100|me|mash|cond18
DPS2=manastone|100|me|weave|cond18
DPS3=manastone|100|me|weave|cond18
DPS4=manastone|100|me|weave|cond18
DPS5=manastone|100|me|weave|cond18
DPS6=manastone|100|me|weave|cond18
 
Code:
  Manastone:
    action: '/useitem "Manastone"'
    condition: >-
      ${Zone.ID}!=151 && ${Zone.ID}!=202 && ${Zone.ID}!=344 && ${Zone.ID}!=345 && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Navigation.Active}
      && !${Me.Invis} && !${Me.Casting.ID} && ${Me.PctMana}<90 && ${Me.PctHPs} >= 75

This is the react I run when not in combat.
 
Mind to post your cond18?
Sure it is this:
${Me.ItemReady[manastone]} && ${Me.CurrentHPs} > 7000 && ${Me.PctMana} < 100 && !${Me.Casting.ID} && !${Me.Invis} && !${Zone.ShortName.Equal[poknowledge]} && !${Zone.ShortName.Equal[nexus]} && !${Cursor.ID}
Code:
  Manastone:
    action: '/useitem "Manastone"'
    condition: >-
      ${Zone.ID}!=151 && ${Zone.ID}!=202 && ${Zone.ID}!=344 && ${Zone.ID}!=345 && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Navigation.Active}
      && !${Me.Invis} && !${Me.Casting.ID} && ${Me.PctMana}<90 && ${Me.PctHPs} >= 75

This is the react I run when not in combat.

Thanks that is pretty much what I had but even outside combat it seems to interrupt KA with buffing, and in combat it slows down heals and things.

For now it is working pretty well just having KA do it with multiple lines with |weave. Outside of combat I'm just letting them med so they get their buffs done.
 
Question - Is there a way to really mash something?

Users who are viewing this thread

Back
Top
Cart