Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bots

Development::Bots Forum for bots.

Reply
 
Thread Tools Display Modes
  #46  
Old 07-22-2011, 03:52 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

Quote:
Originally Posted by bad_captain
This reminds me that I had recently thought about how I would like bots being account based, instead of character based.. I made a script to update the botownercharacterid to another of my characters when I want to, since I don't want to gear up multiple characters work of bots. Does anyone see any downside to that? I don't remember it being discussed before. You could still have separate bots for your characters since they may be different levels and with level specific gear, but you would have access to all of your bots.. Saved bot groups would need to be changed to character based, but I think it would be doable..
ive done this on my server and it's great if all your toons are the same level. it fails when you spawn a bot on lower level toons and the gear they have is too high level for them to wear so that uber sword has no effect and they fail to hand to hand attacks. I recommend leaving it character based. Likewise, their armor is not counted so it's as if they aren't wearing it if it's level based.
__________________
The Realm

Last edited by Congdar; 07-22-2011 at 04:05 PM..
Reply With Quote
  #47  
Old 07-22-2011, 04:49 PM
Criimson
Hill Giant
 
Join Date: Sep 2006
Posts: 172
Default

Alright, so I am trying to get a feel for where we all stand on how to procede.

Add columns of type int to bots for spell types:
Slow
Healing percentage
DD
AoE \______These two columns simply 0 - Off 1 - On
Mez /

each column a number 0 - 4
0 - Off
1 - Burn (All out) - No restrictions
2 - Aggressive - 75% Mana
3 - Balanced - 50% Mana
4 - Passive - 25% Mana

This look like a good starting point? I realize roles will be implimented and that each level will have additional arguments to account for roles. For instance a Rune being cast even when set to passive will always try to cast it on the puller.
Reply With Quote
  #48  
Old 07-22-2011, 10:13 PM
bad_captain
Developer
 
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
Default

After thinking a bit on this, I think it might be best to combine them all into one column, similar to an npc's special attack. I assume we will be adding more options in the future (think raid). You could either include all spelltypes, in order as listed in spdat.h: SpellType_Nuke, SpellType_Heal, SpellType_Root, SpellType_Buff, SpellType_Escape, SpellType_Pet, SpellType_Lifetap, SpellType_Snare, SpellType_DOT, SpellType_Dispel, SpellType_InCombatBuff, SpellType_Mez, SpellType_Charm, SpellType_Slow, SpellType_Debuff , or just the most important. I could see wanting to turn off an SKs pet or keep a healing shaman from debuffing. An example could be "410111000100004". Just parse it when spawning bot. This keeps us from having to keep adding columns, just add another number at the end.

Also, it seems more intuitive if 0 was off, and the higher the number, the more aggressive.
Reply With Quote
  #49  
Old 07-22-2011, 10:50 PM
Criimson
Hill Giant
 
Join Date: Sep 2006
Posts: 172
Default

Quote:
Originally Posted by bad_captain View Post
After thinking a bit on this, I think it might be best to combine them all into one column, similar to an npc's special attack. I assume we will be adding more options in the future (think raid). You could either include all spelltypes, in order as listed in spdat.h: SpellType_Nuke, SpellType_Heal, SpellType_Root, SpellType_Buff, SpellType_Escape, SpellType_Pet, SpellType_Lifetap, SpellType_Snare, SpellType_DOT, SpellType_Dispel, SpellType_InCombatBuff, SpellType_Mez, SpellType_Charm, SpellType_Slow, SpellType_Debuff , or just the most important. I could see wanting to turn off an SKs pet or keep a healing shaman from debuffing. An example could be "410111000100004". Just parse it when spawning bot. This keeps us from having to keep adding columns, just add another number at the end.

Also, it seems more intuitive if 0 was off, and the higher the number, the more aggressive.
I'll leave that up to others. Seems like it would be too confusing and apt to errors. I'd prefer seperate columns for clarity. By comparison the bots already have very few columns compared to other tables.
Reply With Quote
  #50  
Old 07-22-2011, 11:18 PM
bad_captain
Developer
 
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
Default

Quote:
Originally Posted by Criimson View Post
I'll leave that up to others. Seems like it would be too confusing and apt to errors. I'd prefer seperate columns for clarity. By comparison the bots already have very few columns compared to other tables.
Maybe, but it would be handled through code. You most likely wouldn't be doing it by hand. I guess the biggest benefit from doing it this way would be if there were additional types added, you wouldn't need a db update and players could play just fine without making any updates or anything as it would just use default for whatever wasn't in the database.

Working with DBs so much, I just cringe thinking about adding columns like that.. So it's more of a preference kindof thing.
Reply With Quote
  #51  
Old 07-22-2011, 11:35 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

Take a look at the archery setting. It's a db setting that gets loaded into the object so no repeated reads to the db or anything like that.
I like the npc special attack idea. Maybe modify the archery field to be like that. Letters vs. numbers though. 0 thru 9 goes pretty fast, A-Z and a-z leaves a lot of room.
__________________
The Realm
Reply With Quote
  #52  
Old 07-24-2011, 08:54 PM
Criimson
Hill Giant
 
Join Date: Sep 2006
Posts: 172
Default

Quote:
Originally Posted by bad_captain View Post
Maybe, but it would be handled through code. You most likely wouldn't be doing it by hand. I guess the biggest benefit from doing it this way would be if there were additional types added, you wouldn't need a db update and players could play just fine without making any updates or anything as it would just use default for whatever wasn't in the database.

Working with DBs so much, I just cringe thinking about adding columns like that.. So it's more of a preference kindof thing.
Ok I'll defer to your experience. Can you post some code how this will be read and written. I am not sure I have ever worked with a string of numbers in such a way and would like to see how it will work. Once you get a structure down I'll start helping with the various aspects of it.
Reply With Quote
  #53  
Old 07-26-2011, 12:24 AM
bad_captain
Developer
 
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
Default

Check out NPC::NPCSpecialAttacks(). This is called when loading th eNPC from the DB or when the change special attacks command is called. At the end, it writes it to the database. That would be a good place to start.

I'm working on a couple things then I will take a look at this. I want to think about the relationship between these ratings and bot roles / archetypes, as well as how raids will affect the design, before I do anything.
Reply With Quote
  #54  
Old 07-26-2011, 04:49 PM
Criimson
Hill Giant
 
Join Date: Sep 2006
Posts: 172
Default

I'll look into when I have time. My free time is going to be real scarce for the next few weeks. I have my children staying with me for the next month so my free time will be basically spent with them. Although they are both gamers and I do own a PS3, XBox360 and a Wii so they may just ignore me anyway
Reply With Quote
  #55  
Old 07-26-2011, 08:29 PM
louis1016
Hill Giant
 
Join Date: Dec 2009
Posts: 157
Default

I must say I absolutely love all the word done on bots lately. Ive been waiting forever for many of these changes to come and im so glad to see them. The enchanter bot problem, the bot stat and ac problems, etc. are things that have been bothering me the bots. The archetypes/roles or whatever you are going to have them as is an answer to the unrealistic bot buffing that has been going on for way too long and its so awesome that its finally been addressed.

While bots are functioning ideally in fights, they are still granted unrealistic and overpowered capabilities that completely makes them everquest superheros compared to the capabilities of any player.

One thing i'd love to see is something along the lines of bots being able to get aggro from wandering mobs. Having bots this way makes them way too powerful in my opinion. Theres are many situations where it creates really unrealistic scenarios. Rogues should not be able to sneak their whole group anywhere they want. A rogue should have to park their bots somewhere safe and make them guard while he sneaks and scouts where he wants his group to go. I know that the main argument against this that I've heard is that a player can just park his bot and level up afk. Perhaps some code should be added with it to have your bots despawn if they arent used for some period of time? (i dont know how hard that would be)

I also would like the option of making it so I have to gather all the spells myself for the bots. I think servers should have the option of having players have to find/buy all of the spells we want our bots to use. It is too overpowered that our bots have spells that a player would generally have to collect on his own.Right now I can use my necro bot to summon my corpse even though it never never looted the spell like I'm supposed to. I know theres some bot::spellquest feature but I havent been able to figure out how to use it. On axclassic it uses anita_thrall but i dont think thats in the code in eqemu. If im wrong someone please tell me how to use it. The same goes for AA's, but I'm sure that would require a whole resturucturing of the AA system which wouldnt be practical, but it still is annoying that all my bots have AA's with no real system to limit them.

It would also be awesome to have an option for servers to have a bot respawn timer that alters the amount of time you must wait in between spawning the same bot. It would at least give some sort of penalty for when one of your bots dies (you cant use him again for another x amount of minutes).

The last major thing id like to see is for the option to not be able to delete bots until maybe after a certain amount of time. The common method I see on bot servers that people use are creating bots, getting buffs, deleting them, and repeat with a different class, therefore gathering buffs from all the classes as well as having ALL benefits from every class like res, port, corpse summon, etc. Bots shouldnt be as overpowered as they are now due to things like these. Say if you give bots a 2 hour delete time then and the server limits you only have acquired 1 bot so far on the server then you can spawn a druid to fight with you, but if you want to get shaman buffs you have to wait two hours before you can delete your druid.

Bots should not have powers and privelages that the normal player doesnt. If I die down in solb do I get to just respawn immediately there with all my gear and everything? No, but my superhero human warrior bot can. I would like to actually feel like the bot I grouping just died, not had an emergency afk. I feel issues like these would make the bot system feel like more of an alternative to grouping on low population servers rather then feel like I'm grouping with someone with GM commands.
Reply With Quote
  #56  
Old 07-27-2011, 12:50 AM
bad_captain
Developer
 
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
Default

Quote:
Originally Posted by louis1016 View Post
One thing i'd love to see is something along the lines of bots being able to get aggro from wandering mobs. Having bots this way makes them way too powerful in my opinion. Theres are many situations where it creates really unrealistic scenarios. Rogues should not be able to sneak their whole group anywhere they want. A rogue should have to park their bots somewhere safe and make them guard while he sneaks and scouts where he wants his group to go. I know that the main argument against this that I've heard is that a player can just park his bot and level up afk. Perhaps some code should be added with it to have your bots despawn if they arent used for some period of time? (i dont know how hard that would be)
Yeah, AFK leveling is an issue that would have to be considered before this could be changed. Another issue is sometimes poor pathing, where a bot can't follow a player as well as another player could and could cause all kinds of unwanted aggro. I often think it's too easy to get my little bot train in and out of areas, but this would require a lot of work to execute correctly (and would still most likely be implemented as a rule with the default being no aggro).

Quote:
Originally Posted by louis1016 View Post
I also would like the option of making it so I have to gather all the spells myself for the bots. I think servers should have the option of having players have to find/buy all of the spells we want our bots to use. It is too overpowered that our bots have spells that a player would generally have to collect on his own.Right now I can use my necro bot to summon my corpse even though it never never looted the spell like I'm supposed to. I know theres some bot::spellquest feature but I havent been able to figure out how to use it. On axclassic it uses anita_thrall but i dont think thats in the code in eqemu. If im wrong someone please tell me how to use it. The same goes for AA's, but I'm sure that would require a whole resturucturing of the AA system which wouldnt be practical, but it still is annoying that all my bots have AA's with no real system to limit them.
I too was interested in being able to control my bots' AAs (I love micromanagement as far as setup, not so much during combat), and believe I posted somewhere.. One thing I am working on is refactoring the bot AAs to match clients, where aabonuses and GetAA() are used within the code instead of the current switch statements or if elses. I had this almost completed months ago, so it may not be too much work, just a lot of comparing diffs. With almost all of the AA code within CalcAABonuses and GetAA(), this would more easily allow for changes as to how bot receive their AAs. Custom code could allow AAs to be quested, bought, earned, whatever.

Quote:
Originally Posted by louis1016 View Post
It would also be awesome to have an option for servers to have a bot respawn timer that alters the amount of time you must wait in between spawning the same bot. It would at least give some sort of penalty for when one of your bots dies (you cant use him again for another x amount of minutes).
I think this is a great idea. I know I'm guilty of respawning my bots to take out one of the Zek brothers (and trying and failing on AHR). I think a field to keep track of when the bot dies would be all that is needed to implement this. Eventually, I would like a bot who leaves a corpse that must be revived and have resurrection effects, just as a client, which would also combat this problem (you couldn't spawn a bot who has an active corpse).

Quote:
Originally Posted by louis1016 View Post
The last major thing id like to see is for the option to not be able to delete bots until maybe after a certain amount of time. The common method I see on bot servers that people use are creating bots, getting buffs, deleting them, and repeat with a different class, therefore gathering buffs from all the classes as well as having ALL benefits from every class like res, port, corpse summon, etc. Bots shouldnt be as overpowered as they are now due to things like these. Say if you give bots a 2 hour delete time then and the server limits you only have acquired 1 bot so far on the server then you can spawn a druid to fight with you, but if you want to get shaman buffs you have to wait two hours before you can delete your druid.
I've never even heard of someone doing this, but it doesn't surprise me. I'm sure checks could be created to eliminate or discourage this practice.

Quote:
Originally Posted by louis1016 View Post
Bots should not have powers and privelages that the normal player doesnt. If I die down in solb do I get to just respawn immediately there with all my gear and everything? No, but my superhero human warrior bot can. I would like to actually feel like the bot I grouping just died, not had an emergency afk. I feel issues like these would make the bot system feel like more of an alternative to grouping on low population servers rather then feel like I'm grouping with someone with GM commands.
While I agree with this statement in general, I think the drawbacks of running with bots at least cancels out the extra features of bots. They still aren't very smart, they all die when I do (or at least when I respawn after dying), lack utility that comes from actual people playing characters (disciplines, problem solving, company, etc..)


I greatly enjoyed and appreciated your comments Louis, some of which I would have never thought of without you mentioning it. I don't play much on other servers, so my interaction with other bot users is basically only on this board.
Reply With Quote
  #57  
Old 07-27-2011, 02:03 AM
Criimson
Hill Giant
 
Join Date: Sep 2006
Posts: 172
Default

Quote:
Quote:




Originally Posted by louis1016

The last major thing id like to see is for the option to not be able to delete bots until maybe after a certain amount of time. The common method I see on bot servers that people use are creating bots, getting buffs, deleting them, and repeat with a different class, therefore gathering buffs from all the classes as well as having ALL benefits from every class like res, port, corpse summon, etc. Bots shouldnt be as overpowered as they are now due to things like these. Say if you give bots a 2 hour delete time then and the server limits you only have acquired 1 bot so far on the server then you can spawn a druid to fight with you, but if you want to get shaman buffs you have to wait two hours before you can delete your druid.

I've never even heard of someone doing this, but it doesn't surprise me. I'm sure checks could be created to eliminate or discourage this practice.
Actually, this is something I was thinking about. What I was looking at was if a player despawns a bot that it cant be respawned for X amount of time. I noticed that a player could despawn a class get fully buffed and then respawn/respawn to avoid the medding downtime.

I'll look into this as soon as I am finished with the tracking code for bots.
Reply With Quote
  #58  
Old 07-27-2011, 02:50 PM
Criimson
Hill Giant
 
Join Date: Sep 2006
Posts: 172
Default

Quote:
I also would like the option of making it so I have to gather all the spells myself for the bots. I think servers should have the option of having players have to find/buy all of the spells we want our bots to use. It is too overpowered that our bots have spells that a player would generally have to collect on his own.Right now I can use my necro bot to summon my corpse even though it never never looted the spell like I'm supposed to. I know theres some bot::spellquest feature but I havent been able to figure out how to use it. On axclassic it uses anita_thrall but i dont think thats in the code in eqemu. If im wrong someone please tell me how to use it. The same goes for AA's, but I'm sure that would require a whole resturucturing of the AA system which wouldnt be practical, but it still is annoying that all my bots have AA's with no real system to limit them.
There are two values in rule_values for quests to unlock bots and bot quests. I havent tried it but it seems as you have DLed AxClassic you could just copy the anita thrall.pls to your eqemu quests folder and spawn anita where ya want her. Her husband is already in the bazaar quests folder

Quote:
One thing i'd love to see is something along the lines of bots being able to get aggro from wandering mobs. Having bots this way makes them way too powerful in my opinion. Theres are many situations where it creates really unrealistic scenarios. Rogues should not be able to sneak their whole group anywhere they want. A rogue should have to park their bots somewhere safe and make them guard while he sneaks and scouts where he wants his group to go. I know that the main argument against this that I've heard is that a player can just park his bot and level up afk. Perhaps some code should be added with it to have your bots despawn if they arent used for some period of time? (i dont know how hard that would be)
I think that to avoid this it might be easier to add code that removes exp when a player is not on the hate list of a mob. At first I was thinking about damage, like doesn't do any damage but this wouldn't account for healer players with bots or a chanter that doesnt DoT or dd.
The main issue I would have adding code for this would be agroing through walls in dungeons.

With invis and undead invis a player could get by most things anyway, so it isnt that biased towards rogues. It seems that unless there is a good way of accounting for trains that the code as it is should be kept for the time being.

Quote:
I too was interested in being able to control my bots' AAs (I love micromanagement as far as setup, not so much during combat), and believe I posted somewhere.. One thing I am working on is refactoring the bot AAs to match clients, where aabonuses and GetAA() are used within the code instead of the current switch statements or if elses. I had this almost completed months ago, so it may not be too much work, just a lot of comparing diffs. With almost all of the AA code within CalcAABonuses and GetAA(), this would more easily allow for changes as to how bot receive their AAs. Custom code could allow AAs to be quested, bought, earned, whatever.
Are you saying your code matches the number of AAs a bot has to the number a player has like levels? And the player buys their AAs? Should make this an option because I am not sure I am so into that idea. I have nver been a RTS type player and that seems like a lot of research unless you are coding in a window like #bot <name> buyAAs - that pops up a window like a players AAs and you can buy from there...that would be cool. But just typing in a command with the name and points bought would be a pain.

Quote:
The last major thing id like to see is for the option to not be able to delete bots until maybe after a certain amount of time. The common method I see on bot servers that people use are creating bots, getting buffs, deleting them, and repeat with a different class, therefore gathering buffs from all the classes as well as having ALL benefits from every class like res, port, corpse summon, etc. Bots shouldnt be as overpowered as they are now due to things like these. Say if you give bots a 2 hour delete time then and the server limits you only have acquired 1 bot so far on the server then you can spawn a druid to fight with you, but if you want to get shaman buffs you have to wait two hours before you can delete your druid.
This can easily be added after looking at the DB. Just need to place a check in delete command that at least 4 hours has passed since bot creation. (yea Im gunna make it 4 hours as that seems like an average playtime and would be a deterant as most buffs fade by then - unless a player logs in, buffs, logs out and deletes..which seems stupid for buffs)
Reply With Quote
  #59  
Old 07-27-2011, 04:51 PM
louis1016
Hill Giant
 
Join Date: Dec 2009
Posts: 157
Default

Thank you so much for considering these issues, one thing I forgot to mention is that I feel like bots should med when oom during battles. As of now if a cleric runs oom he just stands there for the rest of the fight unless you issue the #bot group guard command which is no good because obviously it stops the rest of the group from fighting. Maybe it would work if you can individually assign commands to different bots? Like #bot (character name) attack/guard/follow etc. This would also make bot pulling way more functional too (at least if you want a bot to pull without a ranged item).
Reply With Quote
  #60  
Old 07-27-2011, 09:27 PM
bad_captain
Developer
 
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
Default

Quote:
Originally Posted by Criimson View Post

Are you saying your code matches the number of AAs a bot has to the number a player has like levels? And the player buys their AAs? Should make this an option because I am not sure I am so into that idea. I have nver been a RTS type player and that seems like a lot of research unless you are coding in a window like #bot <name> buyAAs - that pops up a window like a players AAs and you can buy from there...that would be cool. But just typing in a command with the name and points bought would be a pain.
Sorry I didn't explain it very well. The bot AA code is scattered throughout the code, and I had consolidated it into GetAA() and CalcAABonuses(), which is how it is handled for clients. GetAA returnes the level of a specific AA line, such as Natural Durability or Planar Power. Aabonuses is just like itembonuses or spellbonuses and contains any statistical benefits from AAs. Containing all of the code that gives AAs within 2 places CalcAABonuses and GetAA() makes it easier to maintain especially when it is time to add additional AAs for newer expansions.

The addition of managing AAs per bot was something that I had thought about, but I know it would most likely not make it into the stock source code.
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 10:16 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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3