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 заменю Тифоном.