• 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

Fork / Mod RaidAssist 2.3.0

TheNomadMan

New member
Joined
Feb 8, 2014
RedCents
451¢
Here's my latest and greatest, enjoy!

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bards:
-Bards now have access to an "AoE Twist". Must have AEon=1 and AETwistOn=1. AETwistcount is the number of mobs needed to trigger the AETwist.
-Bards will no longer switch to normal twist in-between mob kills, if adds are present.
-Bards "should be able to" pull with gems and use gems as mana/dps/debuffs/whatever, just like casters, without messing up their twist. I need feedback on this. Functional? Fitting?
-I plan on adding a [Burn] twist. I need suggestions as to under what conditions the Burn twist should revert to one of the non-burn twists. Named died? XT window cleared?

Rich (BB code):
[AE]
AEOn=1
AERadius=50
AE1=NULL
AE2=NULL
AE3=NULL
AE4=NULL
AE5=NULL
AETwistOn=1
AETwistCount=2
AETwistWhat=1 2 3 4 5

XT Heals:
-XT healing is now done on a "most hurt" basis. Up to nine (9) XT heal targets.
-XT Rune-as-heal chains are now viable and highly effective.
-Will no longer try to heal hostile NPC's pets. (Per Feedback from Sinn69)

Rich (BB code):
[Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=1
Heals1=Self Stasis|40|Me
Heals2=Friendly Stasis|35|!MA
Heals3=Mind Over Matter|85|Me
Heals4=Eldritch Rune|90|Me
Heals5=Phantasmal Unity|90|Me
Heals6=Umbral Auspice|65|MA
Heals7=Rune of Xolok Rk. II|90
Heals8=Umbral Rune|95
Heals9=NULL
Heals10=NULL
XTarHeal=1
InterruptHP=75

Rezzing:
-Rez's are performed for all raid(regardless of guild)/fellowship/group/guild members. (Per feeback from EQMule)
-Rez's will occur if, and only if, that player has not already run back to the raid. That is to say; if the player and the player's corpse are in the same zone, they will not be offered a rez. This applies to both ooc and battle rezzing.
-Rez's will only be offered once per person per 30 mins. If a player declines your rez, they will not be offered another for 30 mins. Restart macro to flush timers, if needed.
-Automatic self-rezzing has been disabled. This way the healer will not kill it's own mana pool.

Interrupt Cast to Heal:
-Classes than can heal/rune others will interrupt their casting to heal themselves and/or their MA
-Classes than can only heal/rune themselves will only interrupt a cast if their own HP drops below the InterruptHP= threshold.
-Let me know if I've overlooked any classes that should be able to heal their MA.

Runes:
-Wizards and Enchanters will find their ablity to chain rune has been greatly enhanced. This applies to both self-runes and to runes-as-heals (XT runes are awesome). Be aware, this has aggro implications.
-Let me know if any other classes need access to this.

Rich (BB code):
Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=1
Heals1=Squamae of the Crystalwing|95|Me
Heals2=NULL
Heals3=NULL
Heals4=NULL
Heals5=NULL
XTarHeal=0
InterruptHP=95

*New*Feature*Debuffing*:
-There is a new system for debuffing mobs, based on Maskoi's mezzing system.
-If mobs exist in the add's arrary (if you're fighting more than one mob), this system will allow up for to three (3) single target and three (3) AoE debuffs to be applied to up to ten (10) mobs .
-This means an enchanter could use the Dreary Deeds AA to single-target slow up to 10 mobs at a time while using Bite of Tash to AEdebuff them all, and reapply both as needed.
-DebuffAECount=2 is the number of mobs needed to trigger AE debuffs.
-I am considering the removal of the "Mob is on XT" requirement for this. Need feedback.

Rich (BB code):
[DebuffSpells]
DebuffOn=1
DebuffRadius=50
DebuffMinLevel=75
DebuffMaxLevel=104
DebuffStopHPs=80
DebuffSpells1=Dreary Deeds
DebuffSpells2=Enunciation of Tashan Rk. II
DebuffSpells3=NULL
DebuffAE1=Bite of Tashani
DebuffAE2=NULL
DebuffAE3=NULL
DebuffAECount=2

Performance:
-Added a number of filters to [Buffs], [Heals], [DPS], and [Debuffs] to prevent NO_CAST_RESULT from occurring. Will expand this to other subs when able.
-Corrected syncing issues that occured when ${Cast.Status} has more than one entry.
-Changed the behavior of a number of casting timers to be based on the recast time as opposed to the duration. This applies to things like runes.
-Activated the "missing component" event sub. This only applies to [Buffs] for now. Will apply to heals (for runes as heals), soon.
-Retired the CheckCasting subroutine. It hasn't been doing anything in this build for some time now.
-Reflowed spell meming for quicker results.
-Added conditions to prevent movement during long spell casts.

----------------------------------------------------------------------------------------------------------------------------------------------------------

-That's all I remember changing from last time. Will post if I remember anything else.
-Full code changes are becoming too extensive to post directly. Please let me know if you have any questions about a specific system.
-Please leave feedback and requests. I'll do my best to address them.
-Link to previous public release: RaidAssist 2.0.1

Because I can't help but show off a lil code:

Rich (BB code):
| -------------------------------------------------------------------------------------
| SUB: Do Debuff Stuff
| -------------------------------------------------------------------------------------
    Sub DoDebuffstuff
        /doevents
        /if (!${DebuffOn} || ${Window[RespawnWnd].Open} || ${DMZ} || !${AggroTargetID}) /return
        /if (${DebugDebuff}) /echo ...debug_debuff DoDebuffStuff: enter
        /declare i int local
		/declare g int local 1
		/declare b int local 1
		/declare d int local 1
		/declare DebuffFail int local 0
		/declare DebuffTry int local 1
        /call MobRadar ${DebuffRadius}
        /if (${DebugDebuff}) /echo ${MobCount}
        /for i 1 to 10
            | Test -> array not empty, target=array, above debuff hps, within debuff levels, line of sight, already mez'd timer
            /if (${DebugDebuff}) /echo ${i}
            | Test -> array not empty, 
            /if (${DebugDebuff}) /echo (${AddsArray[${i},1].Equal[NULL]})
            /if (${AddsArray[${i},1].Equal[NULL]})  /goto :SkipDebuff
            /if (${DebugDebuff}) /echo ${AddsArray[${i},1].Equal[${MyTargetID}]}
            /if (${DebugDebuff}) /echo ${Spawn[${AddsArray[${i},1]}].PctHPs}<${DebuffStopHPs}
            /if (${Spawn[${AddsArray[${i},1]}].PctHPs}<${DebuffStopHPs}) /goto :SkipDebuff
            /if (${DebugDebuff}) /echo (${AddsArray[${i},2]}>${DebuffMaxLevel} || ${AddsArray[${i},2]}<${DebuffMinLevel})
            /if (${AddsArray[${i},2]}>${DebuffMaxLevel} || ${AddsArray[${i},2]}<${DebuffMinLevel}) /goto :SkipDebuff
            /if (${DebugDebuff}) /echo !${Spawn[${AddsArray[${i},1]}].LineOfSight})
            /if (!${Spawn[${AddsArray[${i},1]}].LineOfSight}) /goto :SkipDebuff
            /if (${Spawn[${MainAssist} ${MainAssistType} group].ID} && ${Select[${AddsArray[${i},1]},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID}]}==0) /goto :SkipDebuff
            |/if (${DebugDebuff}) /echo ...debug_debuff DebuffTimer${i} ${DebuffTimer${i}} ${Spawn[${AddsArray[${i},1]}].ID} ${i}
				| AE Debuffs
			/if (${Select[${DebuffOn},1,3]} && ${DebuffAECount}>0 && ${MobCount}>=${DebuffAECount} && (${DebuffAETimerAESpell1}==0 || ${DebuffAETimerAESpell2}==0 || ${DebuffAETimerAESpell3}==0) && ${Spawn[${AddsArray[${i},1]}].ID})  {
                /if (${MyTargetID} && ${Spawn[${MyTargetID}].Distance}<${DebuffRadius}) {
					/for g 1 to ${DebuffAE.Size}
					/if (${Select[${DebuffAE[${g}]} NULL]}) /goto :SkipAEDB
					/if (${DebuffAETimerAESpell${g}} > 0) /goto :SkipAEDB
					/if (!${IAmABard} && ${FindItem[=${DebuffAE[${g}]}].ID} && ${FindItem[${DebuffAE[${g}]}].Timer}!=0) /goto :SkipAEDB
					/if (!${IAmABard} && ${Me.AltAbility[${DebuffAE[${g}]}]} && !${Cast.Ready[${DebuffAE[${g}]}]}) /goto :SkipAEDB
					/if (!${IAmABard} && ${Me.CombatAbility[${DebuffAE[${g}]}]} && !${Cast.Ready[${DebuffAE[${g}]}]}) /goto :SkipAEDB
					/if (!${IAmABard} && ${Me.Gem[${DebuffAE[${g}]}]} && !${Me.SpellReady[${DebuffAE[${g}]}]} && (${Me.SpellReady[${Me.Gem[1].Name}]} || ${Me.SpellReady[${Me.Gem[2].Name}]} || ${Me.SpellReady[${Me.Gem[3].Name}]} || ${Me.SpellReady[${Me.Gem[4].Name}]} || ${Me.SpellReady[${Me.Gem[5].Name}]} || ${Me.SpellReady[${Me.Gem[6].Name}]} || ${Me.SpellReady[${Me.Gem[7].Name}]} || ${Me.SpellReady[${Me.Gem[8].Name}]})) /goto :SkipAEDB
					| Bard AE mez code
					/if (${IAmABard}) {
						/echo This is untested
						/squelch /twist once ${Me.Gem[${DebuffAE[${g}]}]}
						/call BroadCast ${IRCOn} ${EQBCOn} g "Debuffing-> AE Debuffing Now - ${DebuffAE[${g}]} "
						/delay 35
						/varset DebuffAETimerAESpell${g} ${Spell[${DebuffAE[${g}]}].Duration.TotalSeconds}s
					}
					/if (!${IAmABard}) {
						| Everyone else 
						/echo I AM AE DEBUFFING ${DebuffAE[${g}]}
						/call CastWhat "${DebuffAE[${g}]}" ${MyTargetID} Debuff
						/echo I JUST CAST AE Debuff ${DebuffAE[${g}]}
						/varset DebuffAETimerAESpell${g} ${Spell[${DebuffAE[${g}]}].Duration.TotalSeconds}s
						/if (${DebugDebuff}) /echo  ...debug_debuff TIMER SET ${DebuffAETimerAESpell${g}}
						/call BroadCast ${IRCOn} ${EQBCOn} g "AE DEBUFFING-> ${DebuffAE[${g}]} "
					}
                 } else {
					| Bard AE mez code
					/if (${IAmABard}) {
						/echo This is untested
						/squelch /twist once ${Me.Gem[${DebuffAE[${g}]}]}
						/call BroadCast ${IRCOn} ${EQBCOn} g "Debuffing-> AE Debuffing Now - ${DebuffAE${g}} "
						/delay 35
						/varset DebuffAETimerAESpell${g} ${Spell[${DebuffAE[${g}]}].Duration.TotalSeconds}s
					}
					/if (!${IAmABard}) {
						| Everyone else 
						/echo I AM AE DEBUFFING ${DebuffAE[${g}]}
						/call CastWhat "${DebuffAE[${g}]}" ${AddsArray[${i},1]} Debuff
						/echo I JUST CAST AE Debuff ${DebuffAE[${g}]}
						/varset DebuffAETimerAESpell${g} ${Spell[${DebuffAE${g}}].Duration.TotalSeconds}s
						/if (${DebugDebuff}) /echo  ...debug_debuff TIMER SET ${DebuffAETimerAESpell${g}}
						/call BroadCast ${IRCOn} ${EQBCOn} g "AE DEBUFFING-> ${DebuffAE[${g}]} "
					}
				}
					:SkipAEDB
			       /next g
			}
			|SINGLE TARGET DEBUFFS
			/if (${Select[${DebuffOn},1,2]}) {
				/if (${DebugDebuff}) /echo ...debug_Debuff DebuffMobs enter MobID:${AddsArray[${i},1]}
				/for d 1 to ${DebuffSpells.Size}
				/if (${Select[${DebuffSpells[${d}]} NULL]}) /goto :SkipDB
				/if (${DebuffTimer${i}Spell${d}} > 0) /goto :SkipDB
				/if (${Me.CurrentMana}<${Spell[${DebuffSpells[${d}]}].Mana}) /goto :SkipDB
				/if (!${IAmABard} && ${FindItem[=${DebuffSpells[${d}]}].ID} && ${FindItem[${DebuffSpells[${d}]}].Timer}!=0) /goto :SkipDB
				/if (!${IAmABard} && ${Me.AltAbility[${DebuffSpells[${d}]}]} && !${Cast.Ready[${DebuffSpells[${d}]}]}) /goto :SkipDB
				/if (!${IAmABard} && ${Me.CombatAbility[${DebuffSpells[${d}]}]} && !${Cast.Ready[${DebuffSpells[${d}]}]}) /goto :SkipDB
				/if (!${IAmABard} && ${Me.Gem[${DebuffSpells[${d}]}]} && !${Me.SpellReady[${DebuffSpells[${d}]}]} && (${Me.SpellReady[${Me.Gem[1].Name}]} || ${Me.SpellReady[${Me.Gem[2].Name}]} || ${Me.SpellReady[${Me.Gem[3].Name}]} || ${Me.SpellReady[${Me.Gem[4].Name}]} || ${Me.SpellReady[${Me.Gem[5].Name}]} || ${Me.SpellReady[${Me.Gem[6].Name}]} || ${Me.SpellReady[${Me.Gem[7].Name}]} || ${Me.SpellReady[${Me.Gem[8].Name}]})) /goto :SkipDB
				/squelch /target id ${AddsArray[${i},1]}
		   	    /delay 20 ${Target.ID}==${AddsArray[${i},1]}
			    /if (${Target.ID}==${AddsArray[${i},1]}) {
				/if (${DebuffCount${i}}<1) /call BroadCast ${IRCOn} ${EQBCOn} g "Debuffing-> ${Spawn[${AddsArray[${i},1]}].CleanName} <- ID:${AddsArray[${i},1]} with ${DebuffSpells[${d}]}
				/if (${DebuffCount${i}}>=1) /call BroadCast ${IRCOn} ${EQBCOn} g "ReDebuffing-> ${Spawn[${AddsArray[${i},1]}].CleanName} <- ID:${AddsArray[${i},1]} with ${DebuffSpells[${d}]}
				:retryDebuff
				| Bard Debuff code
				/if (${IAmABard}) {
					/squelch /twist once ${Me.Gem[${DebuffSpells[${d}]}]}
					/delay 35
					/squelch /target clear
					/varcalc DebuffCount[${i}] ${DebuffCount[${i}]}+1
					/varset DebuffTimer${i}Spell${d} ((${Spell[${DebuffSpells[${d}]}].Duration.TotalSeconds})*10)*.90
				} else {
				| Normal Debuff code
					/call CastWhat "${DebuffSpells[${d}]}" ${AddsArray[${i},1]} Debuff
					/varcalc DebuffFail ${DebuffFail}+1
					/if (${Macro.Return.Equal[CAST_SUCCESS]}) {
						/varcalc DebuffCount[${i}] ${DebuffCount[${i}]}+1
						/varcalc DebuffTimer${i}Spell${d} ((${Spell[${DebuffSpells[${d}]}].Duration.TotalSeconds})*10)*.90
						/if (${DebugDebuff}) /echo ...debug_Debuff ${DebuffTimer${i}Spell${d}}
					}
					/if (${Macro.Return.Equal[CAST_RESIST]} && ${DebuffFail}<2) {
						/call BroadCast ${IRCOn} ${EQBCOn} g "Debuff Resisted -> ${Spawn[${AddsArray[${i},1]}].CleanName} <- ID:${AddsArray[${i},1]}"
						/goto :retryDebuff
					}
				}
				/varset DebuffTry 0
			}
			:SkipDB
			/next d
		/if (${DebugDebuff}) /echo ...debug_Debuff DebuffMobs leave
        :SkipDebuff
        /next i
        /if (${DebugDebuff}) /echo ...debug_debuff DoDebuffStuff: Leave
    /return

Rich (BB code):
| -------------------------------------------------------------------------------------
| SUB: Rez Check
| -------------------------------------------------------------------------------------
    Sub RezCheck
    /if (!${AutoRezOn} || ${DMZ} || ${Me.Hovering}) /return
	/if (${AggroTargetID} && !${Cast.Ready[${AutoRezWith}]}) /return
	/if (!${AggroTargetID} && !${Cast.Ready[${OOCRezWith}]}) /return
    /if (${DebugHeal} || ${DebugAll}) /echo DEBUGHEALS RezCheck Enter
	/declare i int local
    /declare j int local
	/declare r int local
    /declare CorpseCount int local
    /declare RezMeID int local 
    /declare RezID int local
    /declare RezRadius int local 150
    /varset CorpseCount ${SpawnCount[pccorpse radius ${RezRadius} zradius 50]}
    /if (${CorpseCount}>0) {
        /for j 1 to ${CorpseCount}
            /varset RezID ${NearestSpawn[${j},pccorpse radius ${RezRadius} zradius 50].ID}
            /if (${Spawn[${RezID}].Type.Equal[corpse]} && !${SpawnCount[PC ${Spawn[${RezID}].CleanName.Left[-9]}]} && ${OOCRezTimer${RezID}}==0 && ${Cast.Ready[${OOCRezWith}]} && (${Spawn[${RezID}].Guild.Equal[${Me.Guild}]} || ${Spawn[${Me.Fellowship.Member[${Spawn[${RezID}].CleanName.Left[-9]}]} pccorpse].ID} || ${Spawn[${Raid.Member[${Spawn[${RezID}].CleanName.Left[-9]}]} pccorpse].ID})) {
				/target id ${RezID}
                /delay 10 ${Target.ID}==${RezID}
                /if (!${Defined[OOCRezTimer${RezID}]}) /declare OOCRezTimer${RezID} timer outer 30m
                /if (${Target.Distance}<=${RezRadius}) {
					/if (!${Me.Combat}) {
                    /call  CastWhat "${OOCRezWith}" ${Target.ID}
					} else {
					/call  CastWhat "${AutoRezWith}" ${Target.ID}
					}
                    /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                        /call BroadCast ${IRCOn} ${EQBCOn} o "Rezzing =>> ${Target.CleanName} <<="
                        /varset OOCRezTimer${RezID} 30m
                        /return
                    }
                }
            }
        /next j
    }
    /if (${DebugHeal} || ${DebugAll}) /echo DEBUGHEALS RezCheck Leave
/Return
| -------------------------------------------------------------------------------------
 

Attachments

Last edited:
Re: RaidAssist 2.2.2

I have been testing this and so far my wizzy is healing herself with her runes and not trying to heal the MA (which she could not do even if she wanted to). My enchanter is doing a bang up job with rune heals and will test this with my cleric soon. Very nice work TheNomadMan!
 
Re: RaidAssist 2.2.2

EDIT MASKOI: DIFF FILES
DO NOT EVER POST KISSASSIST ON THE WEB OUTSIDE OF REDGUIDES
 
Re: RaidAssist 2.2.2

Maskoi: Say; clearly I've posted something, somewhere, I ought not to have. Not sure I understand, tho. Are you referring to the DiffNow reports? If so; I apologize and will make every effort to remove them. Or; at least, avoid doing so in the future. I didn't realize this posed any leak concerns.

- - - Updated - - -

I just saw the edit in OP. Rgr, that. No more DiffNow's.

- - - Updated - - -

Emailed the DiffNow folk, awaiting reply.

- - - Updated - - -

While we're on the subject: Does anyone have a suggestion for generating basic comparison reports? One that will not give any cause for leak concerns... Html, the best looking report generated by my usual off-line tool, is not a valid upload file type on this board.
 
Last edited:
Re: RaidAssist 2.2.2

-I am considering the removal of the "Mob is on XT" requirement for this. Need feedback.

This would be a good idea. One thing I don't like about Kiss is how it handles mobs in camp that get mind wiped(No Longer an XTarget). The Tank will not pick up any mob in camp that is not on the Xtarget list even if the mob is standing right next to them. I normally have to manually break mez to get things rolling again and the better my chanter gets the more often I see this happening.
 
Re: RaidAssist 2.2.2

Between the rune heals and the slows on all mobs I do not have my enchanter mez'n anymore - works great and no issues with mobs being removed for xt
 
Re: RaidAssist 2.2.2

Updated OP to correct a bad ${DebugHeals} line. This line, a last minute addition, was stopping the macro when an XT heal-check was called. Thanks Thobmage.

- - - Updated - - -

Corrected a potential hang-up when using Nuke-heals and no DPS spells are defined.

- - - Updated - - -

DebuffAETimer's were counting up too high. This has been corrected. Current version 2.3.0. OP updated.
 

Attachments

I will be testing this with my mini bot army of 14 toons(soon to be more), one question though does it heal only self+ma+up to 9xtargets or self+ma+xtarget+grp?
 
i have tested ver 2.2 on raids, it runs great, it will heal a 4 warrior tank group on a raid no problem. if i start to add PC toons/pets to my Clerics Xtar window thats when it can get a bit scary. RA will heal the Xtar toons more than my group tanks. so i use the Xtar sparingly. Is there a way to set healing priorities like, Self, MA, GROUP, XTAR or by class Self, MA, Warrior, Pally, SK then all others
?
 
I was gonna try it out, was just wondering how good it healed, i have 1 lvl 100 cleric thats a bomb at healing (thanks to KA) and one that is lvl 92 and if you sneezed wrong the cleric would be looking for a rez...(was so hard to make that toon) but i have a shammy thats lvl 100 so i could xtarget heal the warrior and just spot grp heals. Gonna try 12 boxing tick tock raid to get starter raid gear for my 85's while working at voa raids to box.
 
RaidAsssit is a modified version of KissAsssit. So you should see similarities except where he beefed it up for the Raids in heals and other areas.
 
it works , I still get same casting times as kissassist thou , im not sure if I need to tweak something else my ini is decent , ? my Upgraded Version of Fastheal3 , with a Doleashtoon=1 command I added to the ini file heals a lot better then this and kiss assist IMO , because it will also use Quiet Miracle and VP on the cleric as well im interested in getting this to work and making it a heal mac for my druid , any ideas ?
 
raidassist seems to work good, havent tried fastheal. Im usually running 14+ toons so hoping to get a good mac that debuffs adds, dps's and heals grp+ma, and buffs more then one grp, which this mac fills all those "so" far. The only thing im having issues with is add handling i have one beefy tank and 2 pansy tanks.
 
I still need to try fastheal too, but i really needed the autorez function as often times i dont want to spam rez's on people who bannered back or got called back.
 
During long raid event when casters types like mages and druids that dont have great mana regen/recovery could FADE to get outta combat and wait for fast regen med to get their mana back, i do this manually now. Shaman Canni Mana Recovery doesn't seem to work while in combat with RA i noticed.
 
AA:Cloak of Shadows.The ability allows you a chance to fade from the enemy's sight.
 
noob question time, if say i boxed 12 toons to do ticktock raid or such , do i need to run this on all toons? or is this only for healer/caster types and if so wouold i just run KA on melee and tanks?
 
scot i run healers and debuffers on RA dps on KA, Just tweak your KA ini till works good for afking and then start RA and end it then copy buffs, healing, dps into it, just need good burns and i could do ticktock with 8 toons.
 
any word on if yr still using this or updating it thenomadman?
have had it crash my one healer a bunch. Tho it never crashes my other main one i've been using it on forever.
 
Fork / Mod RaidAssist 2.3.0

Users who are viewing this thread

Back
Top
Cart