Cool, thanks Jab. Additional thoughts:
Factions and Scripting:
I know this is going a bit overboard, but I am thinking of the true nature of "AI" here

What if the bot you /bot create starts at a neutral faction level (call it zero) and the more you do things they like, the higher your faction goes until a threshold is reached. Like DA:O, the bot gets bonuses to abilities as it increases. For doing things the bot disapproves of, the faction is lowered until the only threshold is they leave the party. It could be a simple counter of -100 through +100, with thresholds at 20, 40, 60, and 80.
For the concept of "static companions", I had thought about that too... making pre-defined companions (just like we would any NPC) that is recruitable via questing (same way you get companions in DA) and players cannot /bot delete them, they can just be sent away. This probably falls more into Merc territory though, but with some persistent tracking of things like Faction that is affected by anything the player does even when the static bot is not around (ie., if the companion is an Elf, and you slaughter a bunch of elves, they'll know!!)
Scripting for your "generic bot" could be nothing more than idle conversation, or racially based (like a Barbarian bot approaching a barbarian point of interest), and of course handling of things like how to react on Kills, health changes, etc. They could be like our Common/* spawnscripts.
Tactics:
Resurrecting our old discussions about Tactics - we talked briefly about using the player Social/Macros as a way to chain bot behaviors together - though in it's current form, it would require a button push. While I'd love to use the UI to build stuff like that, I know it's likely impossible, so having /slash commands to show a bot's current "Tactics" in a text list in chat might work, though difficult to manage. Something like:
Code: Select all
/bot tactics {target|name|id} {add|delete|insert} {tactic_id} {condition} {action}
Where
- {target|name|id} is exactly what it seems
- add - adds a new tactic to the end of the list
- delete - deletes a tactic by "tactic_id"
- insert - inserts a tactic before "tactic_id"
{condition} {action} will probably be the hardest thing to implement. You're basically offering static conditions to execute static commands. While the list is finite, it's still like a mini-LUAScript

Using DA tactics as an example:
Code: Select all
/bot tactics Bob add 0 {static-condition} {static-action}
Where
- {static-condition} is something like "Ally:Health:<50%", or "Enemy:Clustered:At Least Two"
- {static-action} would then be "Use Ability:Heal", or "Use Ability: Mesmerize"
Because our conditions and actions are static, they could be enum'd so the full command would be easier to write:
Code: Select all
/bot tactics list conditions ally
1: Ally:Health:<100%
2: Ally:Health:<75%
3: Ally:Health:<50%
4: Party:Two or more party health:<25%
/bot tactics list actions ally
1: Use Ability:Heal
2: Use Ability:Mighty Heal
3: Use Ability:Group Heal
/bot tactics list conditions enemy
5: Enemy:Clustered:At Least Two
6: Enemy:Clustered:At Least Three
7: Enemy:Clustered:At Least Four
8: Enemy:Clustered:At Least Five
/bot tactics list actions enemy
4: Use Ability: Fireball
5: Use Ability: Mesmerize
6: Use Ability: Deathtouch
/bot tactics Bob_the_Healer add 0 3 2
/bot tactics Bob_the_Healer add 1 4 3
/bot tactics Mary_the_Nuker add 0 5 4
/bot tactics Mary_the_Nuker add 1 8 5
I'm sure it is far more complex than that, but just some things I was mulling over. Another option is of course to allow a Web-based editor, but that opens the door for scary things
