Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::General Support

Support::General Support Post all topics here having to do with errors while trying to connect to an EQEMu server but not about the setup/running of the Server itself.

Reply
 
Thread Tools Display Modes
  #1  
Old 11-27-2016, 09:24 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Are you confusing emulator 'bots' with in-game 'mercenaries?'
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #2  
Old 11-27-2016, 10:19 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

No I just read whatever I could from google on bots and most pages I found said a player can have at the most 1 bot spawned at a time. Either way it is disappointing as the cleric bot is basically worthless. Literally it will burn a healing spell when any damage is taken at all, so all the mana is drained quickly.
Reply With Quote
  #3  
Old 11-27-2016, 10:41 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

I assume this is from one of sites that you read..
Quote:
On Lootfest players are allowed to create 50 bots that they can keep stored but only 1 bot can be active at any given moment. This means that you can have 50 NPCs created and ready to go at all times (stored on the server) but you may only have 1 of those bots in the world and grouping with you at any point in time.

Our base code allows for more than 1 bot to be active at any given time (72, iirc..and 150 creation max.)

Server admins are free to customize those values to their own desires.


Bots have a very basic AI that works well over all..but, don't expect them to be mind readers.

Even just adding a second bot (such as an enchanter, bard or shaman) can greatly increase both yours and a cleric bot's motility.


You can also look into using Heal Rotations.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #4  
Old 11-27-2016, 10:48 PM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

I was just going to ask if you typed ^help ingame. That barebones version of the database needs fine tuning as well, but you are on your own
Reply With Quote
  #5  
Old 12-05-2016, 10:43 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

So I tried messing with heal rotations and I set one up with just my Cleric bot and my character in the rotation. It seems the are even setting for safe HP % and critical as for when they should actually heal you. Enabling this feature does nothing for me, my Cleric still no matter what starts healing me immediately when I am hit.

He will cast healing 6 straight times using all of his mana with 1 minute. There doesn't seem to be a lot of info on this topic, but I cant think Cleric bots have always behaved in this manner.

Anyone have any suggestions?
Reply With Quote
  #6  
Old 12-05-2016, 11:11 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Heal Rotation casting will override a Bot AI spell casting..

..but, it won't keep a bot from processing Bot AI spells...


I don't have a model to go by for what a cleric bot should be doing.

Let me ponder this for a bit and I'll see what I can come up with.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #7  
Old 12-06-2016, 12:26 AM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

In the npc_spells_entries table, I made some adjustments to the cleric bots spells (701) to help deal with some of these issues.
Reply With Quote
  #8  
Old 12-06-2016, 09:33 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

Thanks for the help guys but I don't know how to get to that cpp file unfortunately. I did the installer method to get my server up and running so am not sure how to be able to really make any changes. I did do some experimenting with the heal rotation and when I change the safe level for plate armor to 100% my bot Cleric will heal me non stop.

The problem is when I change the safe level to anything below 95% he ignores it and will auto heal anytime I breach 95%. So literally in a fight he is OOM in about 1 minute.

I also changed the interval for the heal rotation to 1 second hoping this would override whatever else he was doing but it didn't make a difference.
Reply With Quote
  #9  
Old 12-06-2016, 10:03 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

I have been able to locate a few messages here and there about heal rotations so it appears they used to work because I didn't find anyone complaining about this particular issue. There must be a way to turn the 95% threshold off, or have it ignored.

I tested a Shaman bot and it did the same thing.


Also, not that it matters but I tried all the stances and it didn't fix the problem. One notable thing I noticed was if you change the Cleric to stance "passive" he will no longer cast buffs on himself or anyone else in the party, but he still heals at 95% or less.
Reply With Quote
  #10  
Old 12-09-2016, 09:09 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

I added a rule (Bots:CasterStopMeleeLevel) so that the level can be tailored without recompiling code.

The sql is optional and the server will default to the original '13' like before (I changed the '> 12' criteria to '>= 13' .. so, the behavior is the same.)


A rework of bots is on the long range radar..but, there are many, many things that need to be fixed before them.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #11  
Old 12-12-2016, 10:20 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

Quote:
Originally Posted by Uleat View Post
I added a rule (Bots:CasterStopMeleeLevel) so that the level can be tailored without recompiling code.


Thanks for this. I just saw this option when I went poking around.
Reply With Quote
  #12  
Old 12-09-2016, 11:40 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

Thanks for that. Do I need to do some sort of refresh to this on my end? I am assuming it will be in the rules_values correct?

Also, have any quick ideas on what could force healers to the 95% heal setting?
Reply With Quote
  #13  
Old 12-10-2016, 12:06 AM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

If you're using the pre-compiled binaries from Akkadius's installer, you'll have to compile your own or wait until the downloadable ones are updated.
(I'll try to update those tomorrow..)

You'll also need to manually source this sql file into your database: https://github.com/EQEmu/Server/blob...level_rule.sql

That db update will allow you to externally adjust the level.


Bot HR commands start here: https://github.com/EQEmu/Server/blob...mand.cpp#L5945

Heal Rotation functions are here: https://github.com/EQEmu/Server/blob...l_rotation.cpp

I'm out of time for the evening..but, I'll take a look tomorrow and see if I can figure out your symptom.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #14  
Old 12-10-2016, 12:23 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

I don't know that the problem is with the heal rotation code itself. If I am playing a warrior with any plate on at all and change armor type for safe level to 100% the cleric will heal me non stop. So I believe that functionality is working.

The problem is, when I change it to anything below 95% it is overruled by the bots 95% threshold. The Cleric will heal when any member of the group hits 95% health. So heal rotations right now cannot work as intended.

There must be something in the code for healers that specifies <=95% cast healing spell.
Reply With Quote
  #15  
Old 12-10-2016, 12:34 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

I think I just found it in the code.


if( iSpellTypes == SpellType_Heal ) {
if( botCasterClass == CLERIC || botCasterClass == DRUID || botCasterClass == SHAMAN) {
if(caster->HasGroup()) {
Group *g = caster->GetGroup();
if(g) {
for(int i = 0; i < MAX_GROUP_MEMBERS; i++) {
if(g->members[i] && !g->members[i]->qglobal) {
if(g->members[i]->IsClient() && g->members[i]->GetHPRatio() < 90) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
} else if((g->members[i]->GetClass() == WARRIOR || g->members[i]->GetClass() == PALADIN || g->members[i]->GetClass() == SHADOWKNIGHT) && g->members[i]->GetHPRatio() < 95) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
} else if(g->members[i]->GetClass() == ENCHANTER && g->members[i]->GetHPRatio() < 80) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
} else if(g->members[i]->GetHPRatio() < 70) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
}


This of course is just a guess, but I am playing with a warrior right now and the 95% is when I get healed and I see the < 95 up there. Ok I see things that could probably be changed to correct my issues. I hate to be a pain as I know you guys have heard this a million times, but I am new to this and I was unable to get the original method of getting a the piece parts to work so I used the installer. Is it possible to make changes in the cpp files above using that method? Or do I need to go back and try to get the more complicated process to work?


I also see similiar code below for the Paladin class, but there is nothing for the gethpratio. The line is there, but no number and when I made a Paladin bot he would not heal me.

} else if((g->members[i]->GetClass() == WARRIOR || g->members[i]->GetClass() == PALADIN || g->members[i]->GetClass() == SHADOWKNIGHT) && g->members[i]->GetHPRatio() < hpRatioToHeal) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
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 12:07 AM.


 

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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3