Ultimamente algunos hemos experimentado problemas al intentar que nuestros Npcs realizasen comandos, como por ejemplo el hecho de que con el add_attack_spell() solo realizasen el comando que se le pasa en primer lugar, mientras que los demas los ignoraban...
Me he leido todo el codigo y en teoria deberia funcionar, y seguramente funcione, solo que supongo que lo hace de alguna forma bastante compleja.
Por eso he metido tres funciones nuevas y, despues de 9 horas probandolas, puedo dar fe de que funcionan, aunque aun dejan mucho que desear. Estas funciones son:
  add_attack_command(int chance,string nombre,string path,string funcion,int tipo)
Esta es la funcion que hace que el Npc ejecute el comando, los parametros que hay que pasarle son:
-Chance: Posibilidad sobre 100 de que se ejecute el comando.
-Nombre: Identificador del comando para que un mismo comando no se anyada dos veces.
-Path: El archivo donde esta el comando con su ruta completa.
-Funcion: El nombre de la funcion a ejecutar de las que pueda haber en el fichero del comando.
-Tipo: El tipo de argumento que queremos que le pase a la funcion, diferenciamos:
 0: Sin argumento (caso del berserk).
 1: Sobre el propio Npc (un comando curativo, por ejemplo).
 2: Sobre todos los que esten en la misma room (no se me ocurren aplicaciones, pero igual a alguien le sirve).
 3: Sobre uno de los atacantes (como el golpear).

 Las otras funciones son de menos importancia y son:
  remove_attack_command(string nombre)
Que quita un comando de la lista, cuyo nombre hay que pasar como parametro. Ese nombre ha de ser el mismo que se utilizo en el add_attack_command().

  query_attack_commands()
Nos devuelve una lista de los comandos que el Npc tratara de usar en combate.


La funcion add_attack_command() ha de ir en el init del npc (no he probado si en el setup tambien funciona).

Los fallos que le veo de momento son que si consigue ejecutar uno de los comandos ya no sigue intentandolo con los demas (seria una burrada), asi que mi recomendacion es colocar primero los que tengan menos posibilidades y no poner una posibilidad muy elevada, ya que si no ejecutaran un comando cada turno y eso podria ser muy destructivo.
Otro fallo, mas bien algo que queria mejorar, era un nuevo tipo (tipo 4) que fuese similar al tipo 3, pero en lugar de elegir al azar, eligiese a su oponente mas debil (despues de todo el npc no es tonto, y si le atacan en masa le conviene ir matando a algunos de sus atacantes).

Bueno, supongo que la forma en que me he explicado deja mucho que desear, asi que para cualquier duda, preguntadme.
  Vilat.