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?
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)
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.
*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.
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:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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:

