Quote:
1. Where are the scripts that tell the bots how to act and what to do? I use HeidiSQL for editing the database but is the code for their actions in a separate location?
|
Bots are hard-coded into the actual server, though the code will not be included if their option is not enabled when configuring with CMake.
All bots are designed to process variable information loaded from the database, which gives them specialized behaviors.
Quote:
2. Originally I was having problems with Bards playing combat songs. I found a thread that said to increase the type from 8 to 1024. This fixes it for the most part. The problem I have is that the bard appears to struggle at keeping the songs going. Most fade before he starts playing them again. Is there a setting I could look into to modify the refresh or is this a limitation on how the songs are coded?
|
I submitted the out-of-combat bard song code to badcaptain some time ago..in turn, he implemented the concept.
The idea was to allow bard bots a different set of songs while out of combat..stuff like Selo's and other appropriate songs.
(ref:
https://github.com/EQEmu/Server/blob..._OOC_Songs.sql)
Quote:
3. Last bard question. He seems to try and twist 5 songs while out of combat. Is there a way of adjusting this to less so that the important one like health/mana regen are going and not fading?
|
There is no easy way to limit songs so that previous ones do not elapse. Just limiting to 4 songs may cause other issues and I haven't had time to look into their AI code.
Plus, not all songs have an 'even' duration/recast schedule, so there's always the possibility of a 'missed' song casting.
Quote:
4. This goes into question one. I would like to set it up where melee classes, except tanks, move to the back of the mob like rogues. I saw someone post the rogue code but I have no idea where the code is. I figured i could copy that for all classes I wanted to move to the back?
|
Pretty sure that code is tied to a lower class than bots and will affect all classes derived from it.
Of course, you could always virtualize the function and create a polymorphic, derived class function for it.
Quote:
5. Back to referencing 1 again. I noticed anomalies like casters not hasting my SK but would other melees and pets. I assume this is a potential flag in the code that tells what valid targets for the spells are? I understand them not wasting the mana to haste a pure casters. Maybe even turn it off for pets as well as I believe most casters have their own personal pet haste?
|
I can't remember if SK's are considered melee for haste purposes or not... It's either, as you said, a flag (/class check) or another spell is conflicting. (I'm going with class check..)
Quote:
7. What is the best way to modify spells a bot casts. Is HeidiSQL sufficient enough? I assume if I add or remove a row the id column will automatically adjust the numbering? Checking beforehand so that I don't destroy something.
|
The link I posted above for the ooc bard songs shows where the spells should be added/removed.
You should learn about the priority system as well as the type bitmask before making any changes, however.
You should never delete entries from `spells_new` as that affects every entity that uses the spell data.
EDIT: This query will show the ids of the bot spell lists
Code:
SELECT * FROM `npc_spells` WHERE `id` BETWEEN '701' AND '712'
And this for spells by spell list name:
Code:
SELECT * FROM `npc_spells_entries` WHERE `npc_spells_id` IN (SELECT `id` FROM `npc_spells` WHERE `name` LIKE 'Bard Bot')
And the actual spells from the above query:
Code:
SELECT * FROM `spells_new` WHERE `id` IN (SELECT `spellid` FROM `npc_spells_entries` WHERE `npc_spells_id` IN (SELECT `id` FROM `npc_spells` WHERE `name` LIKE 'Bard Bot'))
(Yes, UNIONS/JOINS are easier...)