"Main issues though were with the combat formulas. I made myself level 50, and geared myself accordingly, and made a bot with the exact same level and gear and class. I was hitting the mob for 40-70ish damage per hit, while the bot was hitting for 200-400. I could understand that damage at level 65 with epic lewt, but at level 50? Ouch."
- More info is needed. What is the level of the bot, its class, the weapon(s) he uses, its strength, its buffs ? I paste the damage formulas so I can have advise on them (I repeat that I'm pretty bad a math formulas... ). Standard melee hit formulas with weapons : Code:
mindmgtmp = ( (weapon->Damage * (((GetSTR()*20) + ((GetLevel()*4)*15) + (GetLevel()*10)) / 1000)) /2 ) / (weapon->Delay / weapon->Damage); Code:
mindmgtmp = ( ((2+(GetLevel()/4)) * (((GetSTR()*20) + ((GetLevel()*4)*15) + (GetLevel()*10)) / 1000)) /2 ); Code:
mindmgtmp = 2+(GetLevel()/10)+(GetSTR()/50); As you can see there is no difference between 1hand and 2hands weap. There is no malus on off-hand weaps also, should I add it ? guess yes. Mag |
Mag,
I was down in Lower Guk the other day and my bot warrior (Gnome 40) was using an Executioners Axe from a_ghoul_executioner. He was QUADDING for near 200 damage constantly against red cons. I'm pretty sure he should only be able to hit twice per attack since it is a two handed sword (axe). Also, I didn't notice if the bots can proc on weapons that have the ability to do so. Thanks and keep up the good work. |
Yeah, there is no particular check when a bot is using a 2hand weap.
I will fix that in the next days. |
I think I might have found the problem.
I checked the database for the various stats of the characters, and for some reason, they are insane. 980 STR, 988 STA, 624 DEX, 632 AGI, etc. A level 50 bot of the same level and class only has 80 STR naked, so my guess is that it is not taking the right numbers for equipment. |
Sorry for the double post, but I found the problem, me thinks.
Each time I did #update on the bot after I put on a piece of gear, it added the stats. So with an item that adds +5 str, I updated 10 times, and the bot gained 50 str. |
Ok, I will check that, thank you
|
Mag another question,
Do static effects on equipment (such as haste on Flowing Black Silk Sash or DoT sheilding on some of the higher end items) affect the bots in anyway. I don't notice a change in the attack rate of my two bots with the FBSS but I don't have a parser to verify. Do hit point adjustments on equipment modify the hit points of the bots? I notice that if a bot is at 100% health and I give him an item with +45HP his health doesn't drop to 99% (as it does with me) until natural regeneration 'heals' those 45 hit points. Is there anyway to choose which spells your bots cast? I don't like how my shaman will not cast slow as this is a semi class defining skill. It would be nice to have an interface that you could use once you've spawned the bots to choose the spells they load. Thanks! |
Updates:
-------- version 1.03. -- Rewrited the functions related to the trading with bot and the way the stats of the bots were calculated. -- Now, when you will give an item to a bot, the previous item that was in the slot of the new item, will pop on your cursor. This way, you will be able to give the replaced item to an other bot. -- Worked once again on the damage formulas. -- Added checks on 2hands: special dmg formula, number of hits, etc.. -- Rewrited the "#bot update" method and added a special Mob::CalcBotStats() function to the Mob class. This method is called each time a bot receives a new item. Binaries: http://eqoffline.free.fr/Build.rar Sources: http://eqoffline.free.fr/EQEmu-EQOffline.rar Have fun, Mag |
Quote:
HP on item updates the stats of the bot. But it really takes effect once you zone. For the moment, you can't really choose the spells unless you modify, by hands, the npc_spells_entries table. It's doable, not hard at all, but it requires some time to do. If someone wants to make a npc_spells_entries table with the right levels and spells, that could be really nice. What you just have to figure is the spells type and the priority then you're set. |
Mag,
I updated to 1.03 and when I gave a bot a piece of equipment it didn't give me back what it USED TO have but rather what I just gave it. When I did #bot inventory list it showed the bot as having the item I gave it so the code seems to be duping the item instead of returning what it used to have. |
I'll see about coming up with some proper spell lists for the bots. I've generally gone through all the classes, so it shouldn't be too hard.
This way, I can fix certain things, like shamans using the low level fury buff over and over again before it wears out, slowing the buffing process. |
Quote:
|
Quote:
Binaries and sources and uploaded. Mag |
I'll have the druid bot list done sometime in the next couple of hours. For npc_spells, I'm starting at ID 600, and for the npc_spell_entries, I'm starting at 4000. Sound ok to you?
|
Mag,
Here are 4 examples I can recall from yesterday (though based on your above post I'm not sure you still need them). EX1 - I gave my shaman bot an Iron Mask of the Wise (http://everquest.allakhazam.com/db/item.html?item=23032) when it had a Coral Adorned Mask (http://everquest.allakhazam.com/db/i...ml?item=19245). It applied the Wise mask and returned another wise mask. EX2 - I gave my cleric bot a Simple Cape of the Seer (http://everquest.allakhazam.com/db/item.html?item=23070) when it had a Hooded Black Cloak (http://everquest.allakhazam.com/db/item.html?item=2187). It applied the Simple cape and returned the Simple cape. EX3 - I gave my warrior bot a Grand Bracelet of Eternal War (http://everquest.allakhazam.com/db/item.html?item=23027) when he had 2 Granite Bracers (http://everquest.allakhazam.com/db/item.html?item=839). It applied the Grand Bracelet and returned the Granite Bracer like it should have. This is the only instance I can recall that actually worked. EX4 - I gave my warrior bot a Knotted Belt of the Ravenous (http://everquest.allakhazam.com/db/item.html?item=23011) when he had a Flowing Black Silk Sash. It applied the Knotted belt and returned the Knotted belt. |
Ok thanks sonicvt.
I think it's fixed. Just download the lastest builds: 1.03c and test them please http://eqoffline.free.fr/Build.rar Mag |
Mag, I have a question regarding the npc spells list. I went ahead and applied a list I created to my druid. I created the bot, updated him, logged off, changed his npc_spells in the database, logged back on, zoned, spawned him, and his casting did not change at all, compared to his old spell list. He was casting spells that were not even on his spell list, that I took off to make sure it worked right. Is there something in the source code I need to change in order to get the bot to cast according to the list?
|
EQoffline spells list ID:
Magician: 516 Necromancer: 515 Enchanter: 517 Shaman: 518 Druid: 519 Shadowknight: 512 Beastlord: 524 Other are standards. If someone wants to start to work on this table, that could be nice. This way, we could create profiles. |
Mag,
I fired up 1.03c today and I noticed that the cleric and shaman bots I use (both level 46) heal MUCH less frequently now. SO much so that a single blue con mob can almost take out my warrior or ranger bot before receiving a heal. Was this a change on your part or just the spell set available to level 46 bots? |
Mag,
After further testing I see the shaman bot isn't healing at all at level 46. The cleric appears to still be using the 350 hp heal instead of complete heal like I think he would normally. |
Alright Mag, I'll work on those spell profile lists. Just point me in the direction of the file the bot spell lists are stored in under the source code so I can change it and recompile for testing.
|
Updates: v1.03d
http://eqoffline.free.fr/Build.rar -- new command added "#bot debug spells <target>" : it will show the 16 spells loaded in the bot spells list. -- the command "#bot inventory remove <slotID>" should now remove the item from the target bot inventory. This item pops on the client's cursor. This way, he can gives it to an other bot. Drakelord> If you want to create the npc_spells_entries with the same spells per level as clients, you have to create a new entrie per class into the npc_spells table. For example: Bot_Druid with an ID that will be autoincremented. Then, you have to enter the full spell line into the npc_spells_entries table. In this one, you can see the column : - id: unique id per entrie - npc_spells_id: that will be the ID of you Bot_Druid ID (in the npc_spells table) - spellid: ID of the spell - type: type of the spell (1= nuke, 2=heal, 4=root, 8=buff, 16=escape, 32=pet, 64=lifetap, 128=snare, 256=dot) - minlevel and maxlevel: level range where the spell will be casted. (maxlevel can be set to 255 for some spells that are always usefull like resist spells) - manacost: -1 by default - recast_delay= -1 by default - priority: if you plan to make this table so the bot have exactly the same spells as clients with the right levels range, you can set it to 1. Note that a bot can have a maximum of 16 spells in its spells list. Some casters don't have 16 spells per new spell level range. In this case, you will have to deal with level range so it can learn some of the previous spells. For example, we have a level 8 mage bot. In the npc_spells_entries table you have added the level 8-12 mage spells. But it doesn't have 16 spells to learn in this range. Let's say 6 slots are free, you want that you bot can learn some of the lvl4-8 spells to complete thoses free slots. You would have to set a higher maxlevel for thoses spells. My english seems to suck a lot and I'm sorry about that. I hope that I've explained correctly how it works... Mag |
"#bot debug spells <target>" : it will show the 16 spells loaded in the bot spells list."
This I think will help me out especially when debugging spells loaded and what's not loaded. Excellent addition. GeorgeS |
Yes, I had already done all of these steps, and changed the npc_spells entry for the bot in the database. It didn't fix anything, which is why I was asking if there was something in the source code that I had to change.
Quote:
|
Version is now 1.03d.
Fixed #bot update. No need to zone or kill and respawn the bots anymore. They will update their stats and their spells at the same time. |
Excellent progress sire.
Huge kudos to you. I love swarming around with my private army... |
Magoth, sorry to ask an old question - but what EQEmu source version were bots coded in? I know many have asked if current EQEmu source could support bots, and you do not have time to convert it all over. Maybe others here can help. I searched the thread, but cannot seem to remember if you said EQEmu-0.7.0-931, or 992... or...?
Thanks! |
It's 992, yes.
|
Alright, something is definately not loading correctly.
In the database, the bots "npc_spells_id" is set to 600. 600 is the number of the npc_spells field created for the druid bot. In npc_spells_entries, the spells are selected. The bot is loaded and updated, and with #bot debug spells, he is showing spells that are not even on my list. Does it not actually use the npc_spells_id field in the database? |
To be sure that it's loading your spells, target your bot and do "#ai spellslist 600".
|
Sweet, it worked.
Now, next couple things, :3; First off, is there a way to get a bot to cast DoT's before it casts it's direct damage spells? Also, how can I increase the casting rate in the source code? |
Might require some manual effort on your part, but I believe the npc_spell_entries table has a "priority" field. If it does what I think, the NPC should cast it's spells in the order of priority. I haven't tested this, but it would make sense.
You know how some NPCs pop, and immediately start buffing themselves or summon pets... I think this is what controls that. |
I May be totally off target but I thought I read somewhere that that field governed some weird idea about how many times the npc casts that in a given amount of time... i.e. if priority is 5 then the npc casts that spell 5 times per however long that time period is...
That could be dating myself though and not have been true since the dawn of time, but I remember that from somewhere if it matters... My server is down though so no ability to test it unfortunately. |
I wouldn't be the least bit surprised if a field aptly named "priority" ended up having nothing whatsoever to do with prioritizing what order to cast, but quantities of casts.
Considering I am still wrestling with understanding conditional spawns... |
Mag,
I'm having a terrible time with your raid commands. I created 6 warrior bots (named War_Raid1 through War_Raid6) and 6 cleric bots (named Cleric_Raid1 through Cleric_Raid6). I can invite the bots to be leaders of their own raid groups but I can't add other bots to their group. I'm telling them the corret name of the bot as I can tell which one is the leader (#bot raid info) but they won't join the raid group. Is my naming convention messing up your commands? |
sonicvt>
The method to create a raid is the following one : 1/ Create your group and invite your bots. 2/ Once your group is full, create a raid: #bot raid create. That will show you "Your raid is created". 3/ Then, spawn your 2nd group. You want to make War_Raid1 the leader of the 2nd group, target War_Raid1 and type #bot raid group create. 4/ invite bots in the second group: target bot and type #bot raid invite bot <Group leader name>. In your case, you have to type #bot raid invite bot War_Raid1. 5/ Ok you have created your raid, created groups and invited bots in the raid's groups. If you want to have infos on your raid, type #bot raid info. 6/ Now, you want to give orders to your raid. Note that you can only give order to the group and not to the entire raid. If you want to give an attack order to group1 so it attacks a certain target , target the mob that you want the group attacks and type: #bot raid order tasks attack War_Raid1. The War_Raid1's group will attack your target. 7/ There are other tasks commands : For example, if you that War_Raid1's follow your group, type #bot raid order task follow War_Raid1 sonicvt supposing that sonicvt is your character's name and that you are the group leader. If you want to give a guard order (stop moving) to War_Raid1's group, type #bot raid order task guard War_Raid1. ---- drakelord> "Also, how can I increase the casting rate in the source code?" The bot AI codes is in the BotAI.cpp file. If you want to make custom code, do it at your own risk. Now if you notice that the casting's rate is not right, we can discuss on it and I will make the changes if they are really needed. Talking about spells, I'd like to make a special npc_spells entrie for any bot caster class. This entrie should contain the same spells at the same level that a player. Yes, because some important spells are missing or they re not the in the right level range actually... that's a lot of work, but I think it worths it. Mag |
For thoses who want to work on bot spells, the new npc_spells entries for the bot will be thoses ones:
600: Bot druid 601: Bot cleric 602: Bot shaman 603: Bot ranger 604: Bot sk 605: Bot beastlord 606: Bot bard 607: Bot paladin 608: Bot magician 609: Bot necro 610: Bot wizard 611: Bot enchanter |
Finally, about spells, that's too much work (not hard but requires a lot of time) to create special npc_spells entries for all the classes... so unless someone wants to do it, I think I will add/edit the entries that's not right for the bots.
|
Quote:
|
Anyway, about the spellcasting, bots really do not cast often enough. I've seen healers go for 30 seconds to a minute without healing, when people need it. And casters do not nuke often enough. When I played as a Wizard on live, I definately casted more than once every 30 seconds, o.o; Not sure if it's supposed to be 30 seconds, but something is bugging it to be up around that point at times.
|
All times are GMT -4. The time now is 01:11 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.