Code:
char *NPC::ToHint(int ind){
    STARTNA(__LINE__, 0)
    int i;
    if(Used<=0){ RETURN("No Commander???") }
    if(Dead==1){ RETURN("is Dead???") }
    Zsprintf2(&Buffer,ITxt(196,1,&NPCTexts)/*"L:%i,MP:%i"*/,(Dword)Level+1,(Dword)CalcSkill(4));
    char t[17];
//  for(i=0;i<16;i++) t[i]=' ';
    i=0;
//  if((ATS==5)&&(DMS==5))
    if(SpecBon[0]&AT_DM) t[i++]=ITxt(199,1,&NPCTexts)[ 0];//'M'; // AT+DM Maximum damage always
//  if((HPS==5)&&(MPS==5))
    if(SpecBon[0]&HP_MP) t[i++]=ITxt(199,1,&NPCTexts)[ 1];//'P'; // HP+MP Melee Attacks 50% chance to Paralyse
//  if((HPS==5)&&(SPS==5))
    if(SpecBon[0]&HP_SP) t[i++]=ITxt(199,1,&NPCTexts)[ 2];//'R'; // HP+SP Regeneration 50 HP points per turn
//  if((DFS==5)&&(HPS==5))
    if(SpecBon[0]&DF_HP) t[i++]=ITxt(199,1,&NPCTexts)[ 3];//'E'; // DF+HP Endless Retaliation
//  if((DMS==5)&&(SPS==5))
    if(SpecBon[0]&DM_SP) t[i++]=ITxt(199,1,&NPCTexts)[ 4];//'C'; // DM+SP Champion Distance
//  if((DMS==5)&&(HPS==5))
    if(SpecBon[0]&HP_DM) t[i++]=ITxt(199,1,&NPCTexts)[ 5];//'2'; // DM+HP Attack twice
//  if((ATS==5)&&(DFS==5))
    if(SpecBon[0]&AT_DF) t[i++]=ITxt(199,1,&NPCTexts)[ 6];//'D'; // AT+DF Reduce Enemy Defense by 80%
//  if((ATS==5)&&(MPS==5))
    if(SpecBon[0]&AT_MP) t[i++]=ITxt(199,1,&NPCTexts)[ 7];//'N'; // AT+MP No Enemy Retaliation
//  if((ATS==5)&&(HPS==5))
    if(SpecBon[0]&AT_HP) t[i++]=ITxt(199,1,&NPCTexts)[ 8];//'O'; // AT+HP Fearsome
//  if((ATS==5)&&(SPS==5))
    if(SpecBon[0]&AT_SP) t[i++]=ITxt(199,1,&NPCTexts)[ 9];//'S'; // AT+SP Can Shoot
//  if((DFS==5)&&(DMS==5))
    if(SpecBon[0]&DF_DM) t[i++]=ITxt(199,1,&NPCTexts)[10];//'A'; // DF+DM Strike all Enemy around
//  if((DFS==5)&&(MPS==5))
    if(SpecBon[0]&DF_MP) t[i++]=ITxt(199,1,&NPCTexts)[11];//'I'; // DF+MP Permanent Fireshield
//  if((DFS==5)&&(SPS==5))
    if(SpecBon[0]&DF_SP) t[i++]=ITxt(199,1,&NPCTexts)[12];//'B'; // DF+SP Block
//  if((DMS==5)&&(MPS==5))
    if(SpecBon[0]&DM_MP) t[i++]=ITxt(199,1,&NPCTexts)[13];//'G'; // DM+MP #=NPCLevel/10
//  if((MPS==5)&&(SPS==5))
    if(SpecBon[0]&MP_SP) t[i++]=ITxt(199,1,&NPCTexts)[14];//'F'; // MP+SP Ignore Obstacles (fly)
    t[i]=0;
    Zsprintf3(&Buffer1,ITxt(197,1,&NPCTexts)/*"%s,MR:%i%%[%s]"*/,(Dword)Buffer.Str,(Dword)CalcSkill(6),(Dword)t);
    Zsprintf3(&Hint[ind],ITxt(198,1,&NPCTexts)/*"%s\nCasts %s (%i)"*/,(Dword)Buffer1.Str,(Dword)Magics[Type],(Dword)MPS+1);
    RETURN(Hint[ind].Str)
}
 
Правил в ней получение имени заклинания напрямую из структуры заклинаний (ВоГ получает имя из своего текстовика), вылет прекратился, но на смену ему пришли новые вылеты из-за отсутствия строк для новых фракций в воговском текстовике. В общем, придёт очередь - весь код NPC заменю Тифоном.