Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bots

Development::Bots Forum for bots.

Reply
 
Thread Tools Display Modes
  #1  
Old 04-06-2011, 02:34 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default DontBuffBeforeMe

I am having a problem with the bots and I am hoping I can fix it myself, since no one is having this problem. It appears to me that the BOTS use the botsbuff table to recognize when it is time to rebuff, at least on some of the buffs. With like my cleric he seems to check me for buffs, as soon as I click one off then he rebuffs me. But like the enchanter and druid, they seem to check the table. For instance if I click off Voice of Quellious(sic) and wait, he never recast it until it runs out on him. If I camp him, and then clear that table and respawn him, he will recast the spell.

I am looking at the code and it seems to check DontBuffBeforeMe and the local time.

Take this scenario...

You spawn an Enchanter and he cast VoQ on you, via MGB and then maybe you die and lose the buff, he will not recast it until his wears off.

Second Scenario

You spawn Enchanter bot and he buffs you and then you forgot you wanted to change the group up, the rest of the bots will not get the buff until his wears off.

You get my point...

And it may not even be that, I could still have something wrong on my server or my client. The weird thing is that if I cancel Bulwark of Alendar he will recast it, but nothing else. I have no idea why that spell is acting different than the rest.
Reply With Quote
  #2  
Old 04-06-2011, 03:54 PM
Caryatis
Dragon
 
Join Date: May 2009
Location: Milky Way
Posts: 541
Default

At some point the hassle of dealing with all the problems with bots will eventually outweigh your desire to not box more actual characters, until that time you either need to update the code yourself or wait until somebody like bad_captain does.

That said, without writing 10,000 lines of logic for bots you have to accept some of the shortfalls of the current code. I haven't looked at the bot code but you present your scenarios as if you want your buffs redone the second they drop all the time, which is plainly not true.

Lets say you are in the middle of a huge boss, you get your virtue debuffed... certainly that sucks but so is waiting 14 seconds or whatever without heals while the bot tries to cast it.
Reply With Quote
  #3  
Old 04-06-2011, 04:01 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

No, I am not saying all of that. On the contrary I am trying to fix the problem myself, and it may not even be a shortfall of the code. It may be that I have something wrong somewhere else. It is also not like I am not trying to solve my own problem, I have spent hours look through the C++ code and trying to find out exactly how it works to get a better understanding of how it is structured.

And if I have a choice of dual boxing or using the bots, I will use the bots any day of the week. For the most part they are awesome, this is probably the last thing I need to get fixed regarding my bots.

Quote:
Originally Posted by Caryatis View Post
Lets say you are in the middle of a huge boss, you get your virtue debuffed... certainly that sucks but so is waiting 14 seconds or whatever without heals while the bot tries to cast it.
They fixed that, healing always takes priorities over the buffs.
Reply With Quote
  #4  
Old 04-06-2011, 05:29 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

I figured it out. Spells with a targettype of 5 seem to get recast if they wear off immediately. VoQ has a target type of 41 and will not get recast when it wears off. Still looking into tweaking it without changing the database any.
Reply With Quote
  #5  
Old 04-06-2011, 06:46 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

I changed this in the botspellsai.cpp and it made all the difference for me. I do have on bot group buffing in the rules table, not sure how it would react with that set to false. On line 169 I changed this.

Code:
					if(!((spells[selectedBotSpell.SpellId].targettype == ST_Target || spells[selectedBotSpell.SpellId].targettype == ST_Pet || tar == this)
To this.

Code:
					if(!((spells[selectedBotSpell.SpellId].targettype ==ST_Group || spells[selectedBotSpell.SpellId].targettype == ST_Target || spells[selectedBotSpell.SpellId].targettype == ST_Pet || tar == this)
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:42 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3