PDA

View Full Version : DontBuffBeforeMe


provocating
04-06-2011, 02:34 PM
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.

Caryatis
04-06-2011, 03:54 PM
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.

provocating
04-06-2011, 04:01 PM
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.

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.

provocating
04-06-2011, 05:29 PM
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.

provocating
04-06-2011, 06:46 PM
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.

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


To this.

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