PDA

View Full Version : Bot rebuffing


provocating
04-03-2011, 06:20 PM
I am trying to get a feel for how the bots buff. I am guessing the a bot will check his own buffs to know if he needs to rebuff the group ? If I remove lets say Voice of Quellious from my buffs I do not get rebuffed. If I actually go in and clear the BotBuffs table the bots will rebuff. So I am thinking there probably needs to be a command to clear out this table ?

bad_captain
04-06-2011, 08:08 PM
One of these days I promise I will post my code.. I fixed this issue; basically, they would only rebuff group buffs if they themselves need the buff, regardless who else in the group needs the buff.

bad_captain
04-14-2011, 04:51 PM
Let me know if this works for you now.

provocating
04-14-2011, 05:01 PM
Looks like a lot of changes. Unfortunately it will be tomorrow before I will have time to recompile :(

Just curious what is the purpose of iChance ? Is it just a random number generated to prevent too much casting at one time ?

bad_captain
04-14-2011, 05:07 PM
It was used to give a cleric bot say, a 25% chance to nuke, or 50% chance to buff. After that check was made, that % chance was passed on and checked again, so that instead of 50%, it was actually 25%. I just removed the duplicate check. Once it passed the check, I passed on 100 for the chance so the spell is definitely cast.

provocating
04-14-2011, 05:34 PM
Well I for one am pretty damn happy with the BOTS.

cannon
04-15-2011, 09:45 AM
Great job on the new bot code bad_captain. Buffs are more consistent and It's nice to see the bard twisting more than one song, much more true to the bards role.

On a side note, for anyone that may be testing bots, it's a no brainer, but I will post it anyway.

1. Don't try testing your bots at high levels without gear, of course they run out of mana after casting a level 60 spell that uses the mana the size of the mana pool.
2. If you have Invul = on, buffs don't land when you are invulnerable and therefore the bot will continue to cast until out of mana. (Shouldn't be a problem for the average user, but for GM testing)
3. Same as caster rule in 1., don't try testing your tank bot with no gear, healer bots will run oom trying to heal a tank that has no hit points.
4. Don't expect the bots to be perfect,they can only do what we tell them too.

Just my two-cents worth. :)

bad_captain
04-15-2011, 11:31 AM
Thanks for the thoughts. I always appreciate people posting with their experiences, as many times I don't think of everything or from every perspective.

I have always dealt with the #invul issue, and actually think it shouldn't be too hard to fix. I've just never thought too hard about trying.. :confused:

Bots definitely use mana more quickly, so I know this will have to be tuned.

Bards tend to be squished pretty quickly, but I think I removed or reduced singing their heal song while engaged, as healing a whole raid seemed to build a lot of hate (and aggro).

One thing about rebuffing, and probably why more mana is being used.. If one character or bot in the group gets dispelled, they will cast the buff, even if it's a group spell... recasting Hand of Virtue is very mana intensive. Perhaps I could build in the same group buffing logic I use in group healing, so that if they have the single target buff as well as the group buff, they only cast the group buff if more than 2 need it or something.. But that would require a way to determine what the equivalent single target buff would be.. hmm.. this seems a little more involved.

Out of Combat regen works nicely though, and is definitely used, whereas before, my bots rarely needed a med break except after raid encounters. (I play a Mage and can't always split camps or single pull, so I tend to send my bot group into a spot where they will have adds). I definitely need to think about mana now, which I rarely had to do before.

provocating
04-17-2011, 10:11 AM
Out of the box the BOTS seem better when I compiled today. I noticed I did not have to change anything in botspellsai.cpp like I normally do, if I dispel something they instantly recast which is awesome.

provocating
04-18-2011, 08:21 AM
I went into Cazic Thule with the BOTS last night. Normally I get caught off guard and aggro 3-4 mobs and end up dying. With the same BOT group I did not die once. Buffs are better, healing is better and BOTS seem more responsive to me. Definitely getting close to perfect for me.

There is only one strange thing, which is not major thing but a point of curiosity. The Chanter pet is 50% of the time saying invalid target when I know it had visibility. The mage pet bots do not say this. Also I notice the chanter pet constantly bounces between the chanter and the mob when attacking.

bad_captain
04-18-2011, 02:07 PM
I have seen this myself, but I know it goes back a while. Often when sending a group in with bots who have pets, pets bounce back and forth between the target and the pet's owner. This is usually due to line of sight issues.

I have multiple bot groups set up with hotkeys so that I can send in group(s) on multiple targets at once. If the bots do not have line of sight, shaman pets seem to be the only ones that go in, but as soon as they reach the target, they head back to their owners (after aggroing the mob first). Every once in a while I see mage, beastlord, or chanter pets bounce back and forth, but they tend to not go in unless they have line of sight first. I see this mostly when trying to attack through an open doorway or up/down steps. It seems like they go off of their owner's line of sight, since if they reach their target, they should be able to see them.

At some point I may get around to looking into this, but since I've mostly dealt with spell casting, line of sight and all of that may be a little harder for me to debug and fix.

provocating
04-18-2011, 02:20 PM
What would be strange though, as a player a mage can send a pet in and no matter if there is LOS, they go in anyway and will go through the wall, NPC pets do not do this I guess.

bad_captain
04-18-2011, 04:50 PM
Not necessarily. I often have my pet not attack due to LOS issues. (I don't get any pet attacking messages) The issue I find is that while I ensure I have LOS before attacking, but my bots who are not in the exact same position as me, may not have LOS (can't see a mob through a door, etc.) I'm pretty sure if I can see more than a little bit of the mob, my pet can attack though. I don't recall my pet ever bouncing back and forth though.

I'm not sure if I've tried targetting a mob, losing LOS, then sending pet in.

provocating
04-18-2011, 05:31 PM
My main way of pulling on live and the emu has been via pet. As long as you are in range I can send my pet in and attack even if there is no line of sight. Then I use the pet hold AA to tell the pet to stop, pet back off works but you have to repeatedly click it and that gets annoying. You would not want to pull this way on something that will eat the pet extremely quick, but for a lot of pulling it works and can be quite fun.

provocating
04-26-2011, 01:33 PM
Just an FYI I found a strange bug. It is so strange I have no idea what would even cause this.

Create a Necromancer toon. Level him via command to around Level 20, 40 whatever...just not close to 65 as this does not work at level 65.

Now create an enchanter bot and spawn him, invite him and let him start buffing.

He will cast rune and you will never get it, he will cast until he is out of mana. I tried this on other characters like a warrior with an enchanter, or a ranger with an enchanter and it does not reproduce.

I have MGB turned on my server, not sure if that makes a difference but I really want that left on. I tried other clients just for good measure and they all do it. No idea what is different about a necromancer, so I have no clue where to even look to fix it.

provocating
04-26-2011, 02:07 PM
Looking through the code I think I may have found the offending section of code and it does kind of explain it. There is a check to see if the target character is a Necromancer and if they have Lich on, it is supposed to skip them. I have no buffs on this level 20 guy, and it keeps casting repeatedly. I am going to work with this later on today and see if I can figure it out.

provocating
04-26-2011, 05:45 PM
Okay I finally got time to look at it again. I found how to fix it, at least for myself.

{
// don't cast this on necro's, their health to mana
// spell eats up the rune spell and it just keeps
// getting recast over and over
}
else
{
SpellOnTarget(thespell, g->members[i]);
}


Basically just removing the first section and letting it cast. At least on my server this is working, otherwise it is getting caught in a loop. I am sure there is a more elegant solution but this will work for me, for now.

bad_captain
04-26-2011, 10:19 PM
Where is this code at? I'll take a look at it, but I'm not sure where this belongs.

provocating
04-26-2011, 10:20 PM
bot.cpp

Must also have an impact on the Cleric Bot healing a necro too. When I logged he was at 40% and cleric or druid would not heal him.

Congdar
04-27-2011, 09:13 AM
40% seems low, but there was special code for waiting to healing necro's in order to give them a chance to use a lifetap spell while also using a lich type spell.

provocating
04-27-2011, 09:26 AM
I waiting for at least 5 minutes. Had a Druid and Cleric in group.

My guess it is looking for Lich, or Lich related.

bad_captain
04-27-2011, 10:16 AM
I'm pretty sure it used to be 60%, but then I think someone changed it to 40% before Necros are healed. It should probably be tweaked a bit. 60% seems much better, especially if they are not in combat.


// Give necromancers a chance to go lifetap something or cleric can spend too much mana on a necro
if(hpr >= 40) {
break;
}

provocating
04-27-2011, 10:55 AM
Holy crap, yeah I just found that in my botspellsai.cpp. I am definitely changing that to suit my needs. I also notice that BL will stand back and just sent their pet in to fight. Mine was healing me over and over with their puny heals. I may be changing that because I do not know about you, I would rather have my tricked out BL doing melee.