I have not noticed the spell name changes, pretty sure that info is incorrect for shaman heals but the post is mostly valid. Probly is your spelling, Daluda's Mending is definately not using the grave symbol ( ` ) instead of ( ' ). Tnarg`s Mending has always been spelled with the grave symbol according to my dated ini files and I think that is how it is now and how it always has been. Anyway in response to couple things, yes Vexix a lot of the changes I have been making in my versions are getting fewer and fewer as you integrate and fix them. Yes I am still running the old code so won't be able to check yet if that stuff was dealt with or not, last time I compared it had not been. A quick glance at the newest posted code shows the same problems with enrage that I posted a fix for several pages back, for tagged mobs. Adding a $ does not change what I showed at all, the code I posted has the $ in it etc. The problem is it matched too exact and will not fire if the mob name has a # sign attached. This effects gate also of course.
Previous posted code is here, not sure if this the best way but it does fix the issue. Doesn't fix the enrage code but does fire the event as it should.
Code: Select all
#event Enraged "#*#|${Spawn[id ${CombatTargetID}].CleanName.Right[${Math.Calc[${Spawn[id ${CombatTargetID}].CleanName.Length}-1]}]}| has become ENRAGED#*#"
Code: Select all
#event Offrage "#*#|${Spawn[id ${CombatTargetID}].CleanName.Right[${Math.Calc[${Spawn[id ${CombatTargetID}].CleanName.Length}-1]}]}| is no longer enraged#*#"
The actual enrage code has not been changed either so it pretty much has to be broke still too. I haven't had a lot of time to test it though still. The biggest thing I see right off is storing the mobid of the enrage target and then in next line storing a 1 in same var. While this is not what is causing me to die it does prevent getting back on the mob in the offrage code. Maybe you can explain something I am missing but I just can't make sense of why it would do that.
Problem though is it doesn't turn off attack which it seems it should so currently I am putting in extra /attack off in the erage event for now, I am assuming it is lag or too much time between when the event fires and when the actual /attack off statement is given. But hard to test easily since it gets you dead so quickly when it doesn't work. But will post when I do get it working right.
Code: Select all
Sub Event_Enraged
/if (${Target.ID}) {
/if (${CombatTargetID}) {
/varset EnrageVar ${Target.ID}
/varset CombatTargetID 0
}
/varset EnrageVar 1
}
/return
Code the way I am testing it now.
Code: Select all
Sub Event_Enraged
/botsay Testing enrage etc.
/if (${Target.ID}) {
/if (${CombatTargetID}) /varset EnrageVar ${Target.ID}
/attack off
/varset CombatTargetID 0
}
/return
Setting the EnrageVar to 1 of course sets the target back incorrectly in the Offrage code and causes the bot to at best case just do nothing and worst case aggro something it shouldn't or run off etc looking for the mob to aggro. Thankfully there have been more checks added to help make this less deadly like the MaxTargetRange and CampRadius etc. which are working much better than when they were first added.
Code: Select all
Sub Event_Offrage
/if (${Target.ID}) {
/if (${EnrageVar}) {
/varset CombatTargetID ${EnrageVar}
/varset EnrageVar 0
}
/varset EnrageVar 0
}
/return
Bug in assist code. Always assists the master.
Code: Select all
Sub Assist(string sAssistName)
/squelch /target clear
/if (${DebugList.Find[core]}) /echo /assist ${sAssistName}
/assist ${MasterName}
/delay 2s ${Target.ID}
/if (!${Target.ID}) /call ChatOut 3 "Unable to /assist ${sAssistName}."
/return
Changed to.
Code: Select all
Sub Assist(string sAssistName)
/squelch /target clear
/if (${DebugList.Find[core]}) /echo /assist ${sAssistName}
/assist ${sAssistName}
/delay 2s ${Target.ID}
/if (!${Target.ID}) /call ChatOut 3 "Unable to /assist ${sAssistName}."
/return
Attack code doesn't really attack, think this was mentioned, I just have it commented out for now but pretty sure this is how it used to work and def works better this way if you are driving the bot. Don't like the fact that I gotta have a target for this to work though but will fix sometime. Like to just call that attack command and give a name but easy to work around in my hotkey so it works for now.
Code: Select all
Sub Command-attack
/call StandardTarget "${CommandParam}"
/if (!${Target.Type.Equal[NPC]} && !${Target.Master.Type.Equal[NPC]}) {
/varset CombatTargetID 0
/return
}
/varset CombatTargetID ${Target.ID}
/if (!${Me.Standing}) /stand
/call ChatOut 5 "Attacking ${Target.CleanName}."
/return
Changed to.
Code: Select all
Sub Command-attack
| /call StandardTarget "${CommandParam}"
/if (!${Target.Type.Equal[NPC]} && !${Target.Master.Type.Equal[NPC]}) {
/varset CombatTargetID 0
/return
}
/varset CombatTargetID ${Target.ID}
/if (!${Me.Standing}) /stand
/call ChatOut 5 "Attacking ${Target.CleanName}."
/return
And to finish off since you asked what I am modding, lastly is the taunt code, I have posted code for this several times which makes a night and day difference for a warrior class. The incite code mostly just doesn't cut it, popping your incite disc every 30 seconds is a great way to be sure you have no endurance when you need it. I have since added this to the taunt code and it is very effective this way. I put it inside the taunt code so it is easier to turn on off, meaning taunt must be on to use incite but I can turn off incite and still use taunt. Taunting a mob everytime the button is up is about as useless and only makes it more likely taunt will be down when you need it. Taunting only when you lose aggro is 100% more effective and using this same line of thought with insight makes it more useful and prevents the endurance drain currently in place. Most wars I know had incite completely off because of this.
Code: Select all
|Be nice to see if you have HoTT or Raid HoTT skill.
|This assumes you do since I never group without it.
/if (${DoTaunt} && ${Me.AbilityReady[Taunt]}) {
/if (${Group}>2) {
/if (${Me.TargetOfTarget.ID}!=${Me.ID}) {
/if (${DoIncite} && ${InCiteTimer}<=0) {
/squelch /face fast
/disc incite
/varset InCiteTimer 30s
}
/if (${Target.Distance}<20) {
/call ChatOut 5 ${MasterName} "Taunting ${Target.CleanName}.
/doability "Taunt"
}
}
} else {
/declare TempCalc int local
/declare HeadingMax int local
/declare HeadingMin int local
/varset TempCalc ${Math.Calc[${Me.Heading.Degrees}+180]}
/if (${TempCalc}>360) /varset TempCalc ${Math.Calc[${TempCalc}-360]}
/varset HeadingMax ${Math.Calc[${TempCalc}+10]}
/varset HeadingMin ${Math.Calc[${TempCalc}-10]}
/if (((${Target.Heading.Degrees}>${HeadingMax})||(${Target.Heading.Degrees}<${HeadingMin})) && ${Target.PctHPs}>15) {
/if (${DoIncite} && ${InCiteTimer}<=0) {
/squelch /face fast
/disc incite
/varset InCiteTimer 31s
}
/if (${Target.Distance3D}<20) {
/call ChatOut 5 ${MasterName} "Taunting ${Target.CleanName}.
/doability "Taunt"
}
}
}
}
So when a new version comes out I like to test and be sure there won't be any surprises of course and I have several fixes I use and I will not use without the improved aggro code.
Anyway but not complaining about new and better, I understand how it all works and love the new features. I was just explaining why sometimes I can't or don't just jump to a new version. It really sucks when you get your whole group killed cause the tank trains them or something dumb cause I didn't test the new one works how it should etc. And if the old one works and doesn't add anything I need, sometimes updating gets done slow, more fun to play eq than debug genbot etc when you have a version that works fine.
Anyway hopefully I will get to look at newer one soon but mostly the problems I have look the same and I am in no rush to move my fixes into a newer version.
Some the other stuff is just minor, commands to keep bot from attacking faction mobs etc in GoD. Thanks for all the hardwork though, doing a great job here. Hope that a bit easier to read understand, I tried.