I'm sure it's very possible. Just requires a lot of time and coding. If the bots could recognize safe points, or surrounding cover based on how tall/wide walls, and other objects are.
Some other factors to consider when coding is the bot's health; When the bot is low on legs or head/torso, to find a medkit based on priority.
Ammunition: Finding an appropriate time to replenish ammunition when it is low.
Basically, you would have to create an algorithm for every combat situation you would face yourself.
if {this} > then {that}
Most Bots
if {this} > then {that} > or {that} > not {this} because of {that} > or {that} > or {that} or.......
Human-Like Bot
The more "or," and "not this because of" the better your bot will be (for the sake of being basic in terms). It's giving the bot options to deal with an opponent, and deducting foolish options that will easily get it killed.
As humans we make decisions. Many decisions for many situations. The more options your give your bot (and make sure the reasons suit the situation); The more life-like your bot will be.
Then you can work on creating response dialogue just like in Q3
