EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Windows Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=587)
-   -   Tank bots and Melee Player Chars. (https://www.eqemulator.org/forums/showthread.php?t=33925)

strider51 07-26-2011 05:39 PM

Tank bots and Melee Player Chars.
 
Hello,

I recently posted about this in another thread, but have confirm this issue. I looked around in the code at where the mob's choose a target to attack, but thought someone else may have a better indication of where this is. (is it in mob.cpp or aggro.cpp? or somewhere else. i got alot of aggro list building,b ut can't find the "attack")

The aggro list seems to be fine. I can command #getaggro (or whatever the command was), and it shows me (melee player char) as on the list, at 0, 0.

However as soon as the player char is in melee range of the bot, regardless of the aggro list the player char is attacked. So this makes it difficult to play classes like rogue, berz, etc.

Can anyone point me to the area where the mob "picks" a char to attack, or is this done clientside?

also I should note: I tried this out with 2 player chars, and the aggro works perfectly. It's only with bots.


Steps to repeat this issue.

1. create a character, and a tank bot
2. either aggro and attack , or just command #bot group attack on a mob
3. Stand within melee range of the mob
4. move in and out of melee range to notice the effects
5. check your aggro list with the GM command to confirm that you are on the bottom.

I've confirmed that the mob will always attack the player char. (not sure if this is intended)

thanks,

lerxst2112 07-26-2011 06:01 PM

Look at Mob *HateList::GetTop(Mob *center) and the SmartAggroList rule. If that's on it will always favor a client over pet/bot unless I'm reading it incorrectly.

strider51 07-26-2011 06:31 PM

Thanks lex. Always Helpful
Ill look into this
When I get home

strider51 07-26-2011 08:06 PM

I commented out the following line of code, recompiled and now the Bots will tank, and I can be a rogue or berserker.

I'm not sure of the complete side effects, but this is a perfect change for me, since I want to make a 1 groupable server where I can be a melee damage dealer and not have to tank!

Edit: I should mention. This is in hate_list.cpp line 318 with svn release 1985.

Edit2: This also makes pets Tank... (wow I wish this was always this way, i always thought that pets should be able to tank!!!)


Code:

                        if(cur->ent->IsClient()){
                               
                                if(cur->ent->CastToClient()->IsSitting()){
                                        aggroMod += RuleI(Aggro, SittingAggroMod);
                                }

                                if(center){
                                        if(center->GetTarget() == cur->ent)
                                                aggroMod += RuleI(Aggro, CurrentTargetAggroMod);
                                        if(RuleI(Aggro, MeleeRangeAggroMod) != 0)
                                        {
                                                if(center->CombatRange(cur->ent)){
                                                        aggroMod += RuleI(Aggro, MeleeRangeAggroMod);

                                                        if(currentHate > hateClientInRange || cur->bFrenzy){
                                                                hateClientInRange = currentHate;
                                                                //topClientInRange = cur->ent;
                                                        }
                                                }
                                        }
                                }

                        }


Rhodan 10-22-2011 10:48 AM

I take it this change has not made it into source? Is that a concious decision or oversight?

It's fine either way since the above poster has the solution and it's very easy to do, just wondering if the current source with the client always at the top of aggro was offiically the way things are supposed to be.

Congdar 10-22-2011 11:20 AM

concious decision. reming out that line breaks it so that you will never get aggro if you are a client. set your database to use smartaggro:false
then if you manage your aggro, your bot tank should maintain aggro.

bad_captain 10-23-2011 11:18 AM

I'm testing out a bunch of changes including a fix for this issue. I just need to check a few more things the I will commit it. I will probably add a rule for this, just in case people dont want this behavior.

Rhodan 10-29-2011 01:28 PM

turning off smartaggrolist did it for me. Bots can tank 8)


All times are GMT -4. The time now is 01:32 AM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.