blueboy / portalclassic

playerbot support for C(ontinued)-MaNGOS (classic fork)
GNU General Public License v2.0
18 stars 32 forks source link

Max level healing bots go out of mana within seconds #29

Open hggeren opened 7 years ago

hggeren commented 7 years ago

The max level bots go out of mana within seconds when healing a 40 man raid (Tried with 36 bots in Molten Core with full Pre-raid best in slot, 8 of which were healers). I think this might be because the bots aren't down-ranking healing spells at all. Can someone explain to me how the InitSpell() method in PlayerbotAi.cpp works? Does it only add the max rank spell to the bot's arsenal? Would it be possible for me to simply set a spell ID number instead of a call to m_ai->initSpell() in each respective class bot file to only make them use one specific rank of the healing spell? For example: HEALING_TOUCH = 5188; //spell id of rank 4 Healing Touch. In the PlayerbotDruidAI.cpp.

cala commented 7 years ago

Greeting and thank you for your interest in Playerbot,

initSpell() uses a spell ID as an argument and then looks for linked spells from the spell_chain table. Then it iterates over each spell towards the higher rank known to the bot. This is the spell ID that will be used by the bot.

So, yes : Playerbot does not support downranking right now. Also, it does not support multiple healers on a single target, this means that all healers will get the same target and will probably overheal it instead of having some specific targets or group assigned.

This means that in its current state, Playerbot is not suited to a raid, especially to a 40 man raid. It is more designed to 5/10 man dungeons or outdoor questing. I am thinking of adding a raid AI overlay to the current Playerbot AI but this is a long term work.

However, I'm a bit surprise when you say that all healers go out of mana within seconds. I tried a few MC raids with bots and only paladins were quickly out of mana because of the seal/judgment code that is too mana consuming and need to be redone. (there may be issues with the shaman bots also because I did not rework that AI yet). Maybe your combat orders were not fine tuned enough? Also, 8 healers for a raid of 40 is clearly to low (at least for Classic).

Would it be possible for me to simply set a spell ID number instead of a call to m_ai->initSpell() in each respective class bot file to only make them use one specific rank of the healing spell? For example:

Yes, you can do that but this means that the spell ID you set and only this one will be used, whatever happens. Thus, any bot of that class that don't have the spell will have a broken AI, looping over that spell, trying to casting it and failing over and over, unable to do anything else. Also, most of the healing threshold are designed for the max rank of the healing spells available to the bot.