• 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 - Look at the Final Lua and tell me if its ready for raid testing plz

Undefeated

Well-known member
Joined
Jul 27, 2020
RedCents
169¢
Code:
-- Function to handle the emote indicating Shade's Doom
function HandleShadesDoomEmote(emote)
    -- Parse the emote to identify affected players (SoandsoA, SoandsoB, etc.)
    local affectedPlayers = ParseEmoteForPlayers(emote)
    
    -- Display warning message indicating affected players
    DisplayWarningMessage(affectedPlayers)
    
    -- Listen for "Darkness looms over you" emote from affected players
    ListenForDarknessEmote(affectedPlayers)
end

-- Function to parse the emote and extract affected players
function ParseEmoteForPlayers(emote)
    -- Logic to parse emote and extract affected players
    -- For example, you can use string manipulation or regular expressions
    -- Return a table/array of affected players
end

-- Function to display warning message indicating affected players
function DisplayWarningMessage(players)
    -- Logic to display warning message to players
    -- You can use game's chat system or UI to display the message
end

-- Function to listen for "Darkness looms over you" emote from affected players
function ListenForDarknessEmote(players)
    -- Logic to listen for the "Darkness looms over you" emote from affected players
    -- When emote is detected, start a timer for 15 seconds
    -- After 15 seconds, move the affected players away from the raid
    -- Use the game's API to move players
end

-- Main function to initialize the script
function InitializeScript()
    -- Listen for emotes indicating Shade's Doom
    -- Use the game's event system to listen for specific emotes
    -- When emote is detected, call HandleShadesDoomEmote function
end

-- Call the main function to initialize the script
InitializeScript()

[/IS
POILER]
 
Anyone, can give me an idea on how I can continue making this Lua to be able to run away from then emotes in the Doomshade raid and come back when it is aafe.
 
Latest update I have someone take a look at this plz.



Lua:
local mq = require("mq")

-- Function to check if a player's emote is the trigger for Doomshade event
function isDoomshadeEmote(emote)
    local doomshadeEmotes = {"curse", "cursed", "doom"} -- List of emotes that trigger Doomshade event
    for _, doomEmote in ipairs(doomshadeEmotes) do
        if string.find(emote, doomEmote) then
            return true
        end
    end
    return false
end

-- Check if a player's emote triggers the Doomshade event
if isDoomshadeEmote(emote) then
    -- Verify if the character is in the raid zone "Doomshade_Raid" (Replace with the correct Doomshade raid zone)
    if mq.TLO.Zone.ShortName() ~= 'Doomshade_Raid' then
        return
    end

    -- Retrieve necessary information
    local my_class = mq.TLO.Me.Class.ShortName()
    local i_am_ma = mq.TLO.Group.Member(0).MainAssist()
    local my_name = mq.TLO.Me.CleanName()
    local ma_name = mq.TLO.Group.MainAssist.CleanName()

    -- Check if character is not the main assist and is the target of the emote, or if the main assist is the target
    if not i_am_ma and (target == my_name or target == ma_name) then
        -- Pause certain automated actions
        mq.cmdf('/%s mode 0', my_class)

        -- Stop specific abilities if applicable
        if my_class == 'BER' and mq.TLO.Me.ActiveDisc.Name() == mq.TLO.Spell('Frenzied Resolve Discipline').RankName() then
            mq.cmd('/stopdisc') -- Stop BER disc that roots you in place so you can run if you are a BER
        end

        -- Move away from the Doomshade event
        mq.cmd('/nav locyxz -717, -589, -31')
        mq.delay(100)
        mq.cmd('/nav locyxz -581, -354, -48')
        mq.delay(100)
        mq.cmd('/nav locyxz -581, -136, -51')
        mq.delay(100)
        mq.cmd('/nav locyxz -777, -143, -16')
        mq.delay(100)
        mq.cmd('/nav locyxz -892, -407, -32')
        mq.delay(100)
        mq.cmd('/nav locyxz -871, -604, -34')

        -- Turn off macroquest pause and enable twisting
        mq.cmd('/mqp off')
        mq.cmd('/twist on')
    end
end
 
These two lems were mostly working for me, but never got it to 100%

I've since moved away from lems for raid scripting, like your idea of a single non-lem Lua.

I was also trying to do stuff with kiss to not hard pause - wanted my healers to still heal while waiting to return.

Goodluck!

Code:
    ["text_events"] = {
        ["nos-doomshade-run"] = {
            ["load"] = {
                ["zone"] = "";
                ["class"] = "";
                ["characters"] = "";
                ["always"] = false;
            };
            ["pattern"] = "#*#The Doomshade curses#1#";
            ["name"] = "nos-doomshade-run";
            ["category"] = "mission";
        };
        ["tol-doomshade-run2"] = {
            ["load"] = {
                ["zone"] = "";
                ["class"] = "";
                ["characters"] = "";
                ["always"] = false;
            };
            ["pattern"] = "#*#sends shadows at#1#";
            ["name"] = "tol-doomshade-run2";
            ["category"] = "mission";
        };
 

Attachments

It looks like you are just having all toons run the same path, what we ended up doing was fighting at base of tower and have 5 individual locations off to the left for the green aura, all spread out but within healing distance (its a smaller aura) and then to the right 3 spread out location for the pink aura.(its kind of large)

this was so everyone could be healed but not be in range of hitting anyone else with there aura.

it ended up being a lot more complex then we thought, because for instance while you had the green aura you could get called for the pink aura and would run across raid wiping it, so we ended up creating a bail location for those circumstances. We only beat it once and then decided it wasn't worth the time.

it might be a lot easier now, we were doing it when it was current.
 
pattern: #*#The Doomshade curses #1#


local mq = require('mq')

local function event_handler(line, target)
if not mq.TLO.Zone.ShortName() == 'umbraltwo_raid' then return end

local my_class = mq.TLO.Me.Class.ShortName()
local my_name = mq.TLO.Me.CleanName()

if string.find(line, 'The Doomshade curses') then
mq.cmdf('/dgt group RUNNING The Doomshade curses, target=%s', target)
mq.cmd('/beep')

-- Provide clear instructions to affected players to move away from the raid
mq.cmdf('/rt [Raid] The Doomshade has cursed %s! Move away from the raid to avoid damage!', target)

-- Automatic response: Stop certain abilities if active (e.g., Frenzied Resolve Discipline for BER)
if my_class == 'BER' and mq.TLO.Me.ActiveDisc.Name() == mq.TLO.Spell('Frenzied Resolve Discipline').RankName() then
mq.cmd('/stopdisc')
end

-- Automatic response: Move away from the raid
mq.cmd('/backoff 1')
mq.delay(100)
mq.cmd('/chaseoff')
mq.cmd('/timed 5 /afollow off')
mq.cmd('/nav stop')
mq.cmd('/target clear')
mq.delay(100)
mq.cmd('/nav wp doomrun')
mq.delay(5000)
while mq.TLO.Me.Song('Shade\'s Doom').ID() do
mq.delay(10)
end
mq.cmd('/nav wp doomshade')
mq.delay(1000)
while mq.TLO.Nav.Active() do
mq.delay(10)
end
mq.cmd('/backoff 1')
mq.delay(100)
mq.cmd('/chaseon')
end
end

return {eventfunc=event_handler}
[/CODE]


THis is for the Second Pattern that somoene haas [pointed out for me .

-- pattern "#*#sends shadows at#1#"

local mq = require('mq')

local function event_handler(line, target)
if not mq.TLO.Zone.ShortName() == 'umbraltwo_raid' then return end

local my_class = mq.TLO.Me.Class.ShortName()
local my_name = mq.TLO.Me.CleanName()

if string.find(line, 'sends shadows at') then
mq.cmdf('/dgt group RUNNING (shadows)')
mq.cmd('/beep')

-- Provide clear instructions to affected players to move away from the raid
mq.cmdf('/rt [Raid] Shadows incoming! Move away from the raid to avoid damage!')

-- Automatic response: Stop certain abilities if active (e.g., Frenzied Resolve Discipline for BER)
if my_class == 'BER' and mq.TLO.Me.ActiveDisc.Name() == mq.TLO.Spell('Frenzied Resolve Discipline').RankName() then
mq.cmd('/stopdisc')
end

-- Automatic response: Move away from the raid
mq.cmd('/chaseoff')
mq.cmd('/nav stop')
mq.cmd('/target clear')
mq.delay(100)
mq.cmd('/backoff 1')
mq.cmd('/nav wp doomrun')
mq.delay(15000)
mq.cmd('/nav wp doomshade')
mq.delay(1000)
while mq.TLO.Nav.Active() do
mq.delay(10)
end
mq.cmd('/backoff 0')
mq.delay(100)
mq.cmd('/chaseon')
end
end

return {eventfunc=event_handler}


Please someone take a look and tell me of these 2 Lua's should be good enough for the Doomshade raid. Took a while to put this together I am not a programmer. Had to cut peices and see what will work. So really am curious what people think and what I can work on,.
 
Code:
local mq = require('mq')

local function event_handler(line, target)
    if not mq.TLO.Zone.ShortName() == 'umbraltwo_raid' then return end

    local my_class = mq.TLO.Me.Class.ShortName()
    local my_name = mq.TLO.Me.CleanName()

    if string.find(line, 'The Doomshade curses') then
        mq.cmdf('/dgt group RUNNING The Doomshade curses, target=%s', target)
        mq.cmd('/beep')

        -- Provide clear instructions to affected players to move away from the raid
        mq.cmdf('/rt [Raid] The Doomshade has cursed %s! Move away from the raid to avoid damage!', target)

        -- Automatic response: Stop certain abilities if active (e.g., Frenzied Resolve Discipline for BER)
        if my_class == 'BER' and mq.TLO.Me.ActiveDisc.Name() == mq.TLO.Spell('Frenzied Resolve Discipline').RankName() then
            mq.cmd('/stopdisc')
        end

        -- Automatic response: Move away from the raid
        mq.cmd('/backoff 1')
        mq.delay(100)
        mq.cmd('/chaseoff')
        mq.cmd('/timed 5 /afollow off')
        mq.cmd('/nav stop')
        mq.cmd('/target clear')
        mq.delay(100)
        mq.cmd('/nav wp doomrun')
        mq.delay(5000)
        while mq.TLO.Me.Song('Shade\'s Doom').ID() do
            mq.delay(10)
        end
        mq.cmd('/nav wp doomshade')
        mq.delay(1000)
        while mq.TLO.Nav.Active() do
            mq.delay(10)
        end
        mq.cmd('/backoff 1')
        mq.delay(100)
        mq.cmd('/chaseon')
    end
end
 
Lua:
ocal mq = require('mq')

local function event_handler(line, target)
    if not mq.TLO.Zone.ShortName() == 'umbraltwo_raid' then return end

    local my_class = mq.TLO.Me.Class.ShortName()
    local my_name = mq.TLO.Me.CleanName()

    if string.find(line, 'The Doomshade curses') then
        mq.cmdf('/dgt group RUNNING The Doomshade curses, target=%s', target)
        mq.cmd('/beep')

        -- Provide clear instructions to affected players to move away from the raid
        mq.cmdf('/rt [Raid] The Doomshade has cursed %s! Move away from the raid to avoid damage!', target)

        -- Automatic response: Stop certain abilities if active (e.g., Frenzied Resolve Discipline for BER)
        if my_class == 'BER' and mq.TLO.Me.ActiveDisc.Name() == mq.TLO.Spell('Frenzied Resolve Discipline').RankName() then
            mq.cmd('/stopdisc')
        end

        -- Automatic response: Move away from the raid
        mq.cmd('/backoff 1')
        mq.delay(100)
        mq.cmd('/chaseoff')
        mq.cmd('/timed 5 /afollow off')
        mq.cmd('/nav stop')
        mq.cmd('/target clear')
        mq.delay(100)
        mq.cmd('/nav wp doomrun')
        mq.delay(5000)
        while mq.TLO.Me.Song('Shade\'s Doom').ID() do
            mq.delay(10)
        end
        mq.cmd('/nav wp doomshade')
        mq.delay(1000)
        while mq.TLO.Nav.Active() do
            mq.delay(10)
        end
        mq.cmd('/backoff 1')
        mq.delay(100)
        mq.cmd('/chaseon')
    end
end

return {eventfunc=event_handler}
 
Lua:
local mq = require('mq')

local function event_handler(line, target)
    if not mq.TLO.Zone.ShortName() == 'umbraltwo_raid' then return end

    local my_class = mq.TLO.Me.Class.ShortName()
    local my_name = mq.TLO.Me.CleanName()

    if string.find(line, 'sends shadows at') then
        mq.cmdf('/dgt group RUNNING (shadows)')
        mq.cmd('/beep')

        -- Provide clear instructions to affected players to move away from the raid
        mq.cmdf('/rsay [Raid] Shadows incoming! Move away from the raid to avoid damage!')

        -- Automatic response: Stop certain abilities if active (e.g., Frenzied Resolve Discipline for BER)
        if my_class == 'BER' and mq.TLO.Me.ActiveDisc.Name() == mq.TLO.Spell('Frenzied Resolve Discipline').RankName() then
            mq.cmd('/stopdisc')
        end

        -- Automatic response: Move away from the raid
        mq.cmd('/chaseoff')
        mq.cmd('/nav stop')
        mq.cmd('/target clear')
        mq.delay(100)
        mq.cmd('/backoff 1')
        mq.cmd('/nav wp doomrun')
        mq.delay(15000)
        mq.cmd('/nav wp doomshade')
        mq.delay(1000)
        while mq.TLO.Nav.Active() do
            mq.delay(10)
        end
        mq.cmd('/backoff 0')
        mq.delay(100)
        mq.cmd('/chaseon')
    end
end

return {eventfunc=event_handler}
 
Question - Look at the Final Lua and tell me if its ready for raid testing plz

Users who are viewing this thread

Back
Top
Cart