I win probably 90% of the time. But I have to use a lot of tricks to make it happen. I only run KissAssist on my characters.
1. Buff to the max. Even things like cleric's Shining Defense on the tank and DI. Also Enchanter runes.
2. Avoid shrink. My shammy shrink buff has a condition to not fire in this mission.
Buffs17=Group Shrink|Cond3
Cond3=${Me.Height}>2.03 && !${Zone.ShortName.Equal[herosforge_mission]}
3. Custom mesh with settings that help avoid chars getting stuck in geometry.

4. Start with group standing on blob (or just behind) spawn point, trigger event with bard who selos and levis down to the group. This location is within casting sight of the Lich probably 70% of the time which helps on Lich burn.
5. Small burns on blob to avoid the add. Tank uses 2h weapon for DPS.
6. With a pet-heavy group I use pets to kill the eggs, only rarely get a blue spider add.
7. Burn hard on Lich. Even the cleric uses Turn Undead. Enchanter IOG and Haze. Rarely get add.
8. Tank backs off at Lich 5% to stand on Shalowain. Let the dots finish off the Lich.
9.
Maybe most important, cleric runs on a 2nd computer with NO automation running, during Shalowain the cleric spams group heals and I don't even worry about the echos AE. Just heal thru it. Some burns are still active from Lich phase.
10. My
Lua will attempt to run chars away for the Echos but it doesn't work very well. (
Lua runs on all chars except for cleric!)
[CODE lang="
Lua" title="Stolen
Lua code for Heroes Forge mission"]-- hf.
Lua for Heroes Forge mission, BigDaddy, 1/1/2024
-- most code stolen from other contributors!
local mq = require('mq')
print ("Starting Heroes Forge / KissAssist Helper
Lua")
local counter_lich = 0
local counter_boss = 0
local counter_init = 0
local counter_eggs = 0
local function moving() while mq.TLO.Nav.Active() do mq.delay(100) end end
local function bardAoEEvent()
print ("Entering bardAoEEvent")
if mq.TLO.Me.Buff('Song of Echoes').ID() and not
mq.TLO.Me.SpellReady('Kazumi\'s Note of Preservation')() then
mq.cmd('/g I have the AOE debuff, running to safe spot')
mq.cmd('/mqp on')
mq.cmd('/nav locyxz 568 -1317 327')
moving()
while mq.TLO.Me.Buff('Song of Echoes').ID() do mq.delay(500) end
mq.cmd('/g AOE debuff is gone, resuming')
mq.cmd('/nav spawn #Shalowain')
moving()
mq.cmd('/mqp off')
end
if mq.TLO.Me.Buff('Song of Echoes').ID() and
mq.TLO.Me.SpellReady('Kazumi\'s Note of Preservation')() then
mq.cmd('/g casting Group DA')
mq.cmd('/mqp on')
mq.cmd('/twist off')
mq.cmd('/melody')
mq.cmd('/stopsong')
mq.cmd('/cast Kazumi')
mq.delay(3000)
mq.cmd('/mqp off')
end
end
local function handleAoEEvent()
print ("Entering handleAoEEvent")
if mq.TLO.Me.Buff('Song of Echoes').ID() then
mq.cmd('/g I have the AOE debuff, running to safe spot')
mq.cmd('/mqp on')
mq.cmd('/nav locyxz 568 -1317 327')
moving()
while mq.TLO.Me.Buff('Song of Echoes').ID() do mq.delay(100) end
mq.cmd('/g AOE debuff is gone, resuming')
mq.cmd('/nav spawn #Shalowain')
moving()
mq.cmd('/mqp off')
end
end
while mq.TLO.Zone.ShortName() == 'herosforge_mission' do
mq.delay(1000)
if counter_init == 0 and mq.TLO.Me.Combat() then
mq.delay(300)
mq.cmd('/mqp off')
mq.cmd('/chase on')
mq.cmd('/camphere off')
counter_init = counter_init + 1
end
if mq.TLO.SpawnCount('#Queen of the Spiders')() > 0 and mq.TLO.SpawnCount('npc egg')() > 0 and (counter_eggs == 0) then
print("Killing eggs first pass")
moving()
mq.cmd('/target npc egg')
mq.delay(100)
mq.cmd('/pet attack')
mq.delay(100)
mq.cmd('/pet qswarm')
mq.delay(100)
mq.cmd('/mqp off')
mq.delay(100)
mq.cmd('/backoff off')
mq.delay(100)
mq.cmd('/switchnow')
counter_eggs = counter_eggs + 1
end
if mq.TLO.SpawnCount('#Queen of the Spiders')() > 0 and mq.TLO.SpawnCount('npc egg')() > 0 and not (mq.TLO.Target.ID() == mq.TLO.Spawn("npc egg").ID()) then
print("Killing eggs retargeting")
moving()
mq.cmd('/target npc egg')
mq.delay(100)
mq.cmd('/pet attack')
mq.delay(100)
mq.cmd('/pet qswarm')
mq.delay(100)
mq.cmd('/mqp off')
mq.delay(100)
mq.cmd('/backoff off')
mq.delay(100)
mq.cmd('/switchnow')
end
if mq.TLO.SpawnCount('npc a widowmaker')() > 0 and mq.TLO.SpawnCount('npc egg')() < 1 and not (mq.TLO.Target.ID() == mq.TLO.Spawn("npc a widowaker").ID()) then
moving()
mq.cmd('/target npc widowmaker')
mq.delay(300)
mq.cmd('/mqp off')
mq.delay(300)
mq.cmd('/backoff off')
mq.delay(300)
mq.cmd('/switchnow')
end
if mq.TLO.SpawnCount('#Lich')() > 0 and (mq.TLO.Me.Class.ShortName() == "ENC" or mq.TLO.Me.Class.ShortName() == "WIZ" or mq.TLO.Me.Class.ShortName() == "NEC" or mq.TLO.Me.Class.ShortName() == "MAG" or mq.TLO.Me.Class.ShortName() == "SHM" or mq.TLO.Me.Class.ShortName() == "CLR") and counter_lich == 0 then
mq.cmd('/mqp on')
mq.cmd('/chase off')
mq.cmd('/meleeon 0')
mq.cmd('/nav locyxz 249 -1019 196')
counter_lich = counter_lich + 1
moving()
mq.cmd('/mqp off')
end
if mq.TLO.SpawnCount('#Lich')() > 0 and mq.TLO.Spawn('#Lich').Distance() > 65 and mq.TLO.Spawn('#Lich').PctHPs() > 5 and counter_lich == 0 then
mq.cmd('/mqp off')
mq.cmd('/chase off')
mq.cmd('/nav spawn #Lich')
moving()
end
if mq.TLO.SpawnCount('#Lich')() > 0 and mq.TLO.Spawn('#Lich').PctHPs() < 5 and counter_boss == 0 then
mq.cmd('/mqp on')
mq.cmd('/nav spawn #Shalowain')
moving()
mq.cmd('/mqp off')
mq.cmd('/meleeon 1')
counter_boss = counter_boss + 1
end
if mq.TLO.SpawnCount('#Shalowain')() > 0 and mq.TLO.Spawn('#Shalowain').PctHPs() < 99 and not mq.TLO.Me.Class.ShortName() == "BRD" then
handleAoEEvent()
end
if mq.TLO.SpawnCount('#Shalowain')() > 0 and mq.TLO.Spawn('#Shalowain').PctHPs() < 99 and mq.TLO.Me.Class.ShortName() == "BRD" then
bardAoEEvent()
end
end
[/CODE]
11. Using MQ2Event code to help with spider and egg movement...
[CODE title="MQ2Event code for Heroes Forge spider phase"]
[ForgeSpiderNWL]
trigger=#*#The Spider Queen scuttles off to the lower floor of the structure to the northwest.#*#
command=/multiline ; /backoff on ; /timed 1 /mqp on ; /timed 2 /nav locyx 385 -991 ; /timed 3 /pet stop ; /timed 4 /pet backoff ; /timed 5 /pet follow
[ForgeSpiderNWU]
trigger=#*#The Spider Queen scuttles off to the upper floor of the structure to the northwest.#*#
command=/multiline ; /backoff on ; /timed 1 /mqp on ; /timed 2 /nav locyx 497 -1036 ; /timed 3 /pet stop ; /timed 4 /pet backoff ; /timed 5 /pet follow
[ForgeSpiderSEL]
trigger=#*#The Spider Queen scuttles off to the lower floor of the structure to the southeast.#*#
command=/multiline ; /backoff on ; /timed 1 /mqp on ; /timed 2 /nav locyx 236 -1156 ; /timed 3 /pet stop ; /timed 4 /pet backoff ; /timed 5 /pet follow
[ForgeSpiderSEU]
trigger=#*#The Spider Queen scuttles off to the upper floor of the structure to the southeast.#*#
command=/multiline ; /backoff on ; /timed 1 /mqp on ; /timed 2 /nav locyx 285 -1275 ; /timed 3 /pet stop ; /timed 4 /pet backoff ; /timed 5 /pet follow
[/CODE]
12. Still need to actively run my tank manually and use my New Target button to keep my pet classes on the eggs! I also spam /chase on and /mqp off at phases to ensure everyone is in the game.
13. Running SK, Mage, Bard, Enchanter, Cleric, Shaman and all are max AA and very well-equipped with gear.
My biggest problem remains the eggs and spider phases. Sometimes I get spider adds because the pets won't engage the eggs. Then the boss spider warps back to her starting point and kills my cleric while I'm trying to clean up the blue spider. I'm getting better at leaping out of a window and getting the SK back to save the cleric. The mage pet can tank the blue spider for a long time with shaman heals until I can drag the boss back to it.
It's getting to where it's fun after a lot of trial and error finding a strat that works most of the time!