Improving tactical information for AI
Posted: Sun Feb 24, 2013 2:32 am
I'm in the process of making an addon that will try to improve the tactical AI talent weights, so that enemies are deadlier, without increasing their power level.
Goals:
- Change most attack = X (or attackarea, or disable) checks to the proper types, add them where required.
- add and remove relevant types (eg, "defend" on Bellowing Roar replaced by "attackarea")
Standards:
- Attack/Attackarea values, at 1 = 100 damage or 100% weapon damage at 100 (mind/spell/phys)power, talent level 5. (approximately) EDIT: Halved for DoT effects?
- buff = ???
- Disable 1 = 1 turns of complete incapacitation (or 2 turns of 50% effectiveness, or 3 turns of 1/3 reduced effectiveness etc...)
- Cure 1 = 1 effect cured.
- Heal 1 = 100 HP (talent level 5, 100 power)
- resources = ??
- closein = 6 / (average number of turns to reach)?
- escape = ??
- defend = ??
Done:
- Changed DISABLE's weight, to disable + 1/2 attack
- Changed CURE to 3 + (# of detrimental effects)
- status effects are not a straight pass/fail for checks, they have 10 chances and are weighted based on successes.
- Fixed resistance calculation.
- added more resources for AI.
To Do:
- look at changing ESCAPE's weight to consider CURE?
- look at BUFF
- add +damage% to the resistance calculation section.
- fix the weapon damage type (also, armour? defense?)
- Look at splitting cure into mental/mind/physical types.
- tactically unsustaining talents? (eg. invisibility, stamina drains, mindslayer spikes) (EDIT: maybe create NPC only talents like "spike thermal aura")
- Do something about mutually exclusive sustains.
- look at immobile actors.
Ideas that are too much work:
- move all of the talents' damage calculations(etc) to a standard place in the talent, and access that from the AI, getting the best damage.
-- make "fake" damage projections, so that damage affinity, AM shield, psi shields, and everything else is calculated properly.
- Allow actors to read their target's tactical AI info, so (for example) they would use mana clash when the enemy wants mana, or a pin when the enemy wants to escape/close in.
- allow AI to consider multiple weights and add them up (eg, attack AND disable)
- add another line to check resist, "target" that counts if the target enemy is hit (and then remove attackarea, and have it reference target/foe hits instead)
- make special checks for a bunch of stuff, like silence counting the number of spells vs other talents to determine power, and something for disarm.
Anyone have thoughts on this?
Current bugs:
- bump attacks are default if no other choice, even if it has 0 value. May not be a bug.
- an enemy used Bone Nova on me, when I had >100% physical resist. Also, when out of range. Pyrokinesis used out of range. And repulsion. Also, make leeches only work with a target.
- Ice wall, probability travel not used well.
- enemies suck at escaping.
- Shadow Tunnel should require minions.
- Highborn's bloom with full resources, nothing in sight.
- Wild infusion is "better" defense than Shield rune
EDIT: jenx has taken over this project after I abandoned it.
Goals:
- Change most attack = X (or attackarea, or disable) checks to the proper types, add them where required.
- add and remove relevant types (eg, "defend" on Bellowing Roar replaced by "attackarea")
Standards:
- Attack/Attackarea values, at 1 = 100 damage or 100% weapon damage at 100 (mind/spell/phys)power, talent level 5. (approximately) EDIT: Halved for DoT effects?
- buff = ???
- Disable 1 = 1 turns of complete incapacitation (or 2 turns of 50% effectiveness, or 3 turns of 1/3 reduced effectiveness etc...)
- Cure 1 = 1 effect cured.
- Heal 1 = 100 HP (talent level 5, 100 power)
- resources = ??
- closein = 6 / (average number of turns to reach)?
- escape = ??
- defend = ??
Done:
- Changed DISABLE's weight, to disable + 1/2 attack
- Changed CURE to 3 + (# of detrimental effects)
- status effects are not a straight pass/fail for checks, they have 10 chances and are weighted based on successes.
- Fixed resistance calculation.
- added more resources for AI.
To Do:
- look at changing ESCAPE's weight to consider CURE?
- look at BUFF
- add +damage% to the resistance calculation section.
- fix the weapon damage type (also, armour? defense?)
- Look at splitting cure into mental/mind/physical types.
- tactically unsustaining talents? (eg. invisibility, stamina drains, mindslayer spikes) (EDIT: maybe create NPC only talents like "spike thermal aura")
- Do something about mutually exclusive sustains.
- look at immobile actors.
Ideas that are too much work:
- move all of the talents' damage calculations(etc) to a standard place in the talent, and access that from the AI, getting the best damage.
-- make "fake" damage projections, so that damage affinity, AM shield, psi shields, and everything else is calculated properly.
- Allow actors to read their target's tactical AI info, so (for example) they would use mana clash when the enemy wants mana, or a pin when the enemy wants to escape/close in.
- allow AI to consider multiple weights and add them up (eg, attack AND disable)
- add another line to check resist, "target" that counts if the target enemy is hit (and then remove attackarea, and have it reference target/foe hits instead)
- make special checks for a bunch of stuff, like silence counting the number of spells vs other talents to determine power, and something for disarm.
Anyone have thoughts on this?
Current bugs:
- bump attacks are default if no other choice, even if it has 0 value. May not be a bug.
- an enemy used Bone Nova on me, when I had >100% physical resist. Also, when out of range. Pyrokinesis used out of range. And repulsion. Also, make leeches only work with a target.
- Ice wall, probability travel not used well.
- enemies suck at escaping.
- Shadow Tunnel should require minions.
- Highborn's bloom with full resources, nothing in sight.
- Wild infusion is "better" defense than Shield rune
EDIT: jenx has taken over this project after I abandoned it.