More scattered issues

eccentric

Active Member
Main tank is clearly set as another character, yet on death it says "I am Main Tank, better find a good book for the next 60 seconds."

On group wipe, characters with "Revive on Group Wipe" have been known to just sit there.

Wizard uses Ball of Magma as a spell of last resort, rather than all the time like it should. Wizard cast order is pretty silly in general, script writer needs to talk to raid wizard.

Wizard has no checkbox for Snow-filled Steps. Casting the individual "See Invisible" is a waste of time; SFS will give that to the group plus fish vision in one cast.

Mystic has no configurable target for Ancestry, and no checkbox for Coagulate.
 

Amadeus

The Maestro
Staff member
I have never had any of the first two issues happen in my experiences.

Wizard and Mystic class files are not actively maintained. You are welcome to work on those and submit for general consumption as no one else has done so.

Eq2Bot (and all scripts), as well as their support, are 100% user submitted/maintained and should not be considered part of the ISXEQ2 product purchased with a subscription -- the subscription is only used to cover the costs associated with the items listed specifically on this page: http://www.isxgames.com/isxeq2/Acquisition_Step3.html (3rd paragraph).
 

litewave

Well-Known Member
well line 873 of mystic seems to be wrong.

function MA_Dead()
{
if ${Actor[${MainTankPC}].Health}==-99 && ${Actor[${MainTankPC}](exists)} && ${CombatRez}
call 300 301 0 0 ${Actor[${MainTankPC}].ID} 1
}



it should probably be
call CastSpellRange 300 301 0 0 ${Actor[${MainTankPC}].ID} 1


i also have some spell updates for the mystic spell list but havent tested them yet.
some were missing. some ofthese are the "fun spells" and basically useless but i have them listed anyway for completeness. Some of them are spells that should be there functionally.

x check level group Name
new x 5 989 Master's Smite
new x 20 990 Bounty of the Virtuous
new x 20 991 Udor's Spirit of the Hawk
new x 30 992 Form of the Builder
new x 35 993 Sacred Shield
new x 35 994 Slithering Form of the Serpent
new x 40 995 Haero's Aura of Awareness
new x 45 996 Form of the Great Stag
NEW x 50 997 Talisman of the Spiritist
NEW x 55 180 Harmonious Spirits
NEW x 56 10 Transcendent Grace
new x 65 998 Scroll of Fire Seeds
NEW x 79 15 Umbral Warding
NEW x 80 317 Oberon Obstruction
was 301 36 300 Fields of the Grey

I am not sure if fields of grey should be 300 or 301 (ie was descrepency intentional or not i am not sure.) Probably ok to leave as 301 for now as any call to 300 uses 300 as start and 301 as end
 

Amadeus

The Maestro
Staff member
Actually, I think the function should read:
Code:
function MA_Dead()
{
    variable int MainTankID
    MainTankID:Set[${Actor[exactname,${MainTankPC}].ID}]
 
      if (${Actor[${MainTankID}](exists)} && ${CombatRez})
      {
           if (${Actor[${MainTankID}].IsDead})
                call CastSpellRange 300 301 1 0 ${MainTankID} 1
    }
}
...I will change it in SVN

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

Also, only group numbers (in the spell list xml files) of up to 600 will be read by eq2bot on initialization.

This value is set on line 69 in eq2bot.iss:
Code:
variable string SpellType[600]
 

Pygar

EQ2Bot Specialist
I wrote the wizard file having never played a wizard and looking at the spell list on eq2ref.com.

I'm certain it could be vastly improved upon by someone that actually has played the class. As is, it adds ok dps with no aggro issues, and for what tiny bit I use it for, that works for me ;)

If you want to provide a complete casting priority logic break down for every content type that works at level 10 and level 80, I'll look into implementing it at some time in the future when I'm not busy on other bot projects.
 

litewave

Well-Known Member
ok. thanks.

I used the 900-998 as there was a 999 already, i will adjust my copy to 600 max and test it and if no probs will post it.

as for wizard mine is still mid level, so if you have a 80 wiz (or close to it), running getabilities will list all the spells (assuming you have them all that is). I can import that and the wiz spell list to access to look for any that are missing.
 

grimesp78

Banned
Which scripts

ok. thanks.

I used the 900-998 as there was a 999 already, i will adjust my copy to 600 max and test it and if no probs will post it.

as for wizard mine is still mid level, so if you have a 80 wiz (or close to it), running getabilities will list all the spells (assuming you have them all that is). I can import that and the wiz spell list to access to look for any that are missing.
Just out of curiousity, which classes are/have been updated periodically? Im only asking in the event Im playing one or more of these classes that haven't been looked at in a while. I just started playing a swashy. I noticed it never uses its frontal invis attacks, nor does it try to move behind the target to do rear attacks (hehe dirty mind).......Thanks!
 

Pygar

EQ2Bot Specialist
Just out of curiousity, which classes are/have been updated periodically? Im only asking in the event Im playing one or more of these classes that haven't been looked at in a while. I just started playing a swashy. I noticed it never uses its frontal invis attacks, nor does it try to move behind the target to do rear attacks (hehe dirty mind).......Thanks!
Dirge, defiler, warden, fury, guard, zerker, troub, sk, illy, coercer all get significant attention.

Swashbuckler should move around, I'd look at your movement key definitions to make sure they are correct. Also, swash to my knowledge has NO frontal invis attack. Only one invis attack that isn't very worthwhile other than on pull. Bot's in general can not be intuitive enough to precast combat functions, so I ruled out using this CA since the bot never seems to actually grey out all the others.

Swash / brig scripts don't get alot of attention but they do get some.

Scripts getting no attention these days:
Mystic, Paladin, Bruiser, Monk, Ranger, Assasin

I will eventually get to working on assasin, but I have to finish whats happening in the experimental version of eq2bot before I can make it better.
 

Pygar

EQ2Bot Specialist
Main tank is clearly set as another character, yet on death it says "I am Main Tank, better find a good book for the next 60 seconds."

On group wipe, characters with "Revive on Group Wipe" have been known to just sit there.

Wizard uses Ball of Magma as a spell of last resort, rather than all the time like it should. Wizard cast order is pretty silly in general, script writer needs to talk to raid wizard.

Wizard has no checkbox for Snow-filled Steps. Casting the individual "See Invisible" is a waste of time; SFS will give that to the group plus fish vision in one cast.

Mystic has no configurable target for Ancestry, and no checkbox for Coagulate.
1. When the MT dies the bot runs a function to pick a new one. It selects the person in group/raid with highest HP and continues combat. After combat and some downtime it will reset to orriginal MT if he is in range. If the MA dies it sets the MT as MA. When a bot gets set to MT combat will continue, but when it's over it may take some time for them to reset. Generally, if you lost your tank, you should probably reset the values or restart the bot.

2. On group wipe, it waits a predefined time before clicking revive. If a non-bot character revives durring that cooldown, then the others will not revive automatically. This function was added to support afk botting that I don't actively support. If something changed that broke it, I'm not going to spend much time on fixing it, as my fix will be to remove the button.

3. No idea why Mystic doesn't use Ancestry or Coagulate. I don't have one to test with honestly. I suspect the person who wrote that class file didn't have the aa. Mystic is the only healer not using my style heal functions, and I've not been motivated to change any of it's behaviors. The only edits I make to the file have been to fix new bugs or make changes to support new core functions. This class would certainly benefit from someone with a mystic updating the script.
 

wired203

Active Member
Pygar I had some thoughts on what you said earlier "Bot's in general can not be intuitive enough to precast combat functions"

I actually wonder if it would be possible though not easy.

Say in this scenerio, MT is whatever and player controlled, Healer is shaman class and botted. You could determine to pre-ward by checking incombat to see if the player is in combat and then check to see if MT has a target. If your out of combat and MT has a target it means he is about to pull and it would be a good precast time.

Same could be used for a lot of other char types as well, Assasin to get invised, Swash etc. Basically any class that can benefit from pre-casting before a pull. I wouldn't AFK a tank with a target as this scenerio would cause constant pre-casting.

Just an idea I had knocking around in my head after I read it. I do realize it would be tough to implement as well.
 

Pygar

EQ2Bot Specialist
I don't like it too much as it is very play style dependent. I know I do a ton of targeting when idle, we'll see tons of false positives.

For many classes, like defiler, just constant precasting doesn't cause an issue. But others that actually want something to land 3s before mob hits cap or whatever, I just don't see it happening.

This also reflects back to some deficiencies in the bot from its original creator. There is no idle function in the bot. It is either in combat, or it is persistently buffing. I can check some things between those two fucntions, but 99% of the time it is one of those 2 routines.

Between the 2 routines, I could add logic to fire a PreCombat class function to dump whatever you like into, however it wont fire at the same time for all bots, and will be a little hit in miss. If you look at the execution time of the buff routines in some bots, it can spend 10s on each cycle of it.

Also think about times when your training and what not. We wouldn't want the follow bots to enter precombat casting prematurely or whatever.
 

litewave

Well-Known Member
why not the obvious? use botcommander ( or similiar) to signal (from mt) that you are about to pull. use the innerspace mech to send the message to each bot and then those bots can pre-combat whatever they do. At that point the puller should have the target acquired.

for those bots that autopull, they could do the same.
 

Amadeus

The Maestro
Staff member
The illusionist bot casts a couple of pre-combat spells when it discovers that the MT is in "Combat Mode" but yet the mob's health is greater than the engage threshold.

Doesn't work all of the time, but typically the MT is in combat mode for a few seconds before the mob is actually engaged -- especially on epic fights.
 

eccentric

Active Member
1. When the MT dies the bot runs a function to pick a new one. It selects the person in group/raid with highest HP and continues combat. After combat and some downtime it will reset to orriginal MT if he is in range. If the MA dies it sets the MT as MA. When a bot gets set to MT combat will continue, but when it's over it may take some time for them to reset. Generally, if you lost your tank, you should probably reset the values or restart the bot.
Yikes. That's exactly how it played out, but for obvious reasons of usability I set the MA and the MT to be the same character, and that's the fighter I play with the others on autofollow. It was a back-and-forth rez-a-thon between healers and the MT on that fight, but when everyone was finally dead at the same time, the automatic revive on group wipe didn't kick in either.
 

litewave

Well-Known Member
this is the updated mystic spell list, the new spells have not been encorporated into the mystic code yet, but i did make sure it loaded correctly. Those new spells that are added to pre-existing groups should work fine as is.

here is the file
 

Attachments

eccentric

Active Member
This is what I would start with for wizards, if this is even possible to code up. Note that they are pretty much a pure dps class, and aside of the meager powerfeed their only utility is in dps buffs. Therefore a dps-centric script approach should be fine for any situation.

The way this list works is that after every spellcast attempt, you start at the top and iterate down to the first spell that exists, is available for cast, and that meets the requirements in the parenthesis. The rules may change somewhat if POTM, Velium Gift, or Surge of Ro are active, but I left those possibilities out for now due to their added complexity.

---

Glacialshield on MT
Protofire on target (if target is epic)
Furnace of Ro (if PBAE's enabled)

Iceshape (if Fireshape isn't up, and Surge of Ro isn't up, and if Velium Gift is available for cast)
Velium Gift (if Iceshape doesn't exist or if it does exist and is up, and if Fireshape isn't up, and if Surge of Ro isn't up)
Fireshape (if Iceshape isn't up, and Velium Gift isn't up, and if Surge of Ro is available for cast)
Surge of Ro (if Fireshape doesn't exist or if it does exist and is up, and if Iceshape isn't up, and if Velium Gift isn't up)

Ice Spears on target

Solar Wind on target (if AE's enabled, and if target encounter has 3 or more mobs)
Exothermicity on target (if PBAE's enabled, and if at least 4 nearby mobs)
Electron Storm on target (if AE's enabled, and if target encounter has 5 or more mobs)

Surging Tempest on target

Freehand Sorcery (if Bolt of Ice is available for cast)
Bolt of Ice on target

Freehand Sorcery (if PBAE's enabled, and if Fission is available for cast)
Fission on target (if PBAE's enabled)

Solar Wind on target (if AE's enabled, and if target encounter has 2 or more mobs)
Exothermicity on target (if PBAE's enabled, and if at least 3 nearby mobs)
Electron Storm on target (if AE's enabled, and if target encounter has 4 or more mobs)

Hailstorm on target (if PBAE's enabled)
Ball of Lava on target
Thunderclap on target
Heatwave on target

Exothermicity on target (if PBAE's enabled, and if at least 2 nearby mobs)
Electron Storm on target (if AE's enabled, and if target encounter has 3 or more mobs)

Magma Chamber on target
Solar Flare on target
Ro's Coil on target

--

NOTE:
- Protofire and Ro's Coil are unresistable.
- Hailstorm and Thunderclap are new Wizard AA nukes in beta.
- Furnace of Ro and Ice Spears have elemental debuffs now, but Heatwave will gain an AA heat debuff in the expansion and at that time I would place it underneath Ice Spears.
 

eccentric

Active Member
Another issue of note, the illusionist mythical pet always drops when zoning, while mentored. The script doesn't notice this and therefore doesn't recast the pet after zoning in.
 

pz

Active Member
illusionist script checks to see if you have 3 conc available before casting the pet. personally i removed that check in my local version, you may wish to do the same.
 

Nuprecon

Active Member
back to the precast, is it possible to set it to respond to an ingroup pull / assist macro?

Have it monitor the MT's talking and where $MTsays = "Yo, Incoming", cast(ward/stealth) or something to those aspects?

If no assist or pull macro is given then it goes on like normal it just skips the "pre" routine.
 

Pygar

EQ2Bot Specialist
back to the precast, is it possible to set it to respond to an ingroup pull / assist macro?

Have it monitor the MT's talking and where $MTsays = "Yo, Incoming", cast(ward/stealth) or something to those aspects?

If no assist or pull macro is given then it goes on like normal it just skips the "pre" routine.
It isn't difficult to add this to your local version, but I would prefer not to add text triggers like this into the release version as it would be trivial for soe to build monitor who is using them.

As someone else stated, this is a better function for eq2botcommander. Where you can push a button there and it sends a local instruction to each IS session to run a given function.

I'll think about adding the functions in, but honestly, there are just much bigger fish to fry atm.
 

Sunomi

Senior Member
Swash / brig scripts don't get alot of attention but they do get some.
I was going to start a thread on this today myself. It seems like with the latest SVN update, the brigand file has changed somehow. When using the brigand as a dps class and not to act as a MT, the brigand will not randomly jump upfront next to the tank and just hang out there. Then all of a sudden, the brigand will start to do almost perfect circles around the group/mob for a few rounds without ever doing any damage. It's the weirdest thing I've ever seen so far. It seems pretty consistent though on fights that last more than 30 seconds.
 

Valerian

ISX Specialist
I was going to start a thread on this today myself. It seems like with the latest SVN update, the brigand file has changed somehow. When using the brigand as a dps class and not to act as a MT, the brigand will not randomly jump upfront next to the tank and just hang out there. Then all of a sudden, the brigand will start to do almost perfect circles around the group/mob for a few rounds without ever doing any damage. It's the weirdest thing I've ever seen so far. It seems pretty consistent though on fights that last more than 30 seconds.
oh, you probably need to uncheck the "Dancing Brigand" checkbox in the UI. That was added to entertain pickup groups.
 

Pygar

EQ2Bot Specialist
I've not tested brigand with new release. I will load it tonight. What was added to the core bot were improvements to make positional dps like brigand better, but of course brigand needs to be updated for these changes to get any of the benefits.
 

Sunomi

Senior Member
I've not tested brigand with new release. I will load it tonight. What was added to the core bot were improvements to make positional dps like brigand better, but of course brigand needs to be updated for these changes to get any of the benefits.
Awesome!

And Valerian I won't lie, I laughed out loud.:D
 

Tamorus

Well-Known Member
Yeash the swashy one does this also. In the debug is says it is strafing left to left and seems to get caught in a loop. It does fast circles around the mob until it does the next check and may then stop depending on the quadrant.

Very bizarre behaviour but as Pygar said the scripts have not been updated in a while. Would love a fix for it...but am going to go through the code a bit and see if I can hack it a bit.
 

badshark

Well-Known Member
btw the troub script is doing it to please please fix this it must have happened recently now troub script errors out and stops running i am geting the strafe error to
 

Tamorus

Well-Known Member
Just a note, it only seems to do it on toons that have flank or front attacks...my dirge is FINE...swashy goes fucking crazy every second pull....and it drops his dps to zero....Pygar you know you want help meh! =)
 

Pygar

EQ2Bot Specialist
If you want me to do anything about that error, your going to have to paste the full crash error from the console.
 

Tamorus

Well-Known Member
No crash at all...just when ever it uses Strafe Left to Left or Strafe Right to Right it spins in a circle around the mob for 5-20 seconds.

Is there a way to port the debug info to a text file or something?
 

Pygar

EQ2Bot Specialist
I need affected classes on the spinning.

The strafe functions have a 5 second timeout. However if your class file continues to spew more position checks without letting position specific ability cast first, its going to appear to constantly spin.

I suspect the rogue files all need reworking. I would start by changing any castspellrange calls

sample current:
call CastSpellRange ${SpellRange[${xAction},1]} 0 1 1 ${KillTarget}

Add 0 0 0 0 1 0 to the end:
call CastSpellRange ${SpellRange[${xAction},1]} 0 1 1 ${KillTarget} 0 0 0 0 1 0

That 5th place after the target indicates NOT to queue the ability. This way it will move to position, use an ability, wait for it to finish casting, then move to the next check. I think the current problem is it doesn't wait for use and just moves to the next position check.
 

Smyrk

Active Member
Bruiser is exhibiting the same strafe issues for me. I haven't had a chance to look at the current calls yet to try modifying them, however.
 

Sunomi

Senior Member
Looks like the brigand was adjusted as far as the loop goes but not it appears to strafing left to right, though still auto attacking. However, the class barely fires off any CA's particulary (which I am assuming is the spell # listed in the debug?) back attacks while strafing behind. I don't know the proper way to debug the problem but I did collect this if it would help any:

It's two different sections of the debug, pasted into a notepad file. The rest of the debug is consistant with this:

1st left 21447 40
DEBUG:: Strafing to LEFT from RIGHT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21447 Ability - 101
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st right 21447 40
DEBUG:: Strafing to RIGHT from LEFT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21447 Ability - 101
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st right 21447 40
DEBUG:: Strafing to RIGHT from LEFT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21447 Ability - 101
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st right 21394 40
DEBUG:: Strafing to RIGHT from LEFT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21394 Ability - 100
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st right 21394 40
DEBUG:: Strafing to RIGHT from LEFT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 0 Target - 21394 Ability - 154
DEBUG::CastSpellRange - Position check: Range - 1 Position - 0 Target - 21394 Ability - 382
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21394 Ability - 100
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st left 21394 40
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21447 Ability - 101
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st right 21447 40
DEBUG:: Strafing to RIGHT from LEFT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21447 Ability - 101
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st left 21447 40
DEBUG:: Strafing to LEFT from RIGHT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21447 Ability - 101
DEBUG:: CheckPosition Already Close to target, Checking Quadrant
1st right 21447 40
DEBUG:: Strafing to RIGHT from LEFT Side
DEBUG::CastSpellRange - Position check: Range - 1 Position - 1 Target - 21447 Ability - 101
 

avernus

Active Member
i play an assassin as my main, if/when you guys work on the scripts for that class, if you want some insight as to casting order, etc. I'd be more then happy to help (although, i'm no coder, so I can't really make sense of the class routine to fix it myself.)
 

Pygar

EQ2Bot Specialist
This is what I would start with for wizards, if this is even possible to code up. Note that they are pretty much a pure dps class, and aside of the meager powerfeed their only utility is in dps buffs. Therefore a dps-centric script approach should be fine for any situation.

The way this list works is that after every spellcast attempt, you start at the top and iterate down to the first spell that exists, is available for cast, and that meets the requirements in the parenthesis. The rules may change somewhat if POTM, Velium Gift, or Surge of Ro are active, but I left those possibilities out for now due to their added complexity.
.

Thanks, I coded this into the Wizard file today.
 
Top Bottom