Code:
void NPCAttack0(_MonArr_ *G2B_MArrA,_MonArr_ *G2B_MArrD,_Hero_ *G2B_HrA,_Hero_ *G2B_HrD)
{
  #include "templ.h"
  int  i,yes,pers,Mt[7],MnS[7],MnD[7];
  NPC *npc;
//  if(IsThis(G2B_HrA->Owner)!=0) StoreFired(-1,0,0,0);
  NPCsa[0].Init();
  NPCsa[1].Init();
  do{
    if(G2B_HrA==0) break;
    npc=&NPCs[G2B_HrA->Number];
    if(npc->Type!=3) break; // Inferno
    if(npc->Used<=0) break;
    if(npc->Dead==1) break;
    if(G2B_HrD!=0) break; // не нейтральный стек
    pers=npc->Level/2+5; if(pers>20) pers=20;
    for(i=0;i<7;i++){ Mt[i]=G2B_MArrD->Ct[i]; }
    yes=RemoveCreature(G2B_MArrD->Ct,G2B_MArrD->Cn,MnS,MnD,pers); // pers домножен на 100
    if(yes==0) break;
    if(IsThis(G2B_HrA->Owner)!=0){
      Message(ITxt(9*3+6*6*4+1,1,&NPCTexts),1);
      CrChangeDialog(G2B_HrA,Mt[0],MnD[0],Mt[1],MnD[1],Mt[2],MnD[2],
                Mt[3],MnD[3],Mt[4],MnD[4],Mt[5],MnD[5],Mt[6],MnD[6]);
    }else{
      AddCreature(G2B_MArrA->Ct,G2B_MArrA->Cn,Mt,MnD);
    }
    for(i=0;i<7;i++){ G2B_MArrD->Cn[i]=MnS[i]; if(MnS[i]<=0) G2B_MArrD->Ct[i]=-1; }
  }while(0);
  do{
    if(G2B_HrD==0) break;
    npc=&NPCs[G2B_HrD->Number];
    if(npc->Type!=3) break; // Inferno
    if(npc->Used<=0) break;
    if(npc->Dead==1) break;
    if(G2B_HrA!=0) break; // не нейтральный стек
    pers=npc->Level/2+5; if(pers>20) pers=20;
    for(i=0;i<7;i++){ Mt[i]=G2B_MArrA->Ct[i]; }
    yes=RemoveCreature(G2B_MArrA->Ct,G2B_MArrA->Cn,MnS,MnD,pers); // pers домножен на 100
    if(yes==0) break;
    if(IsThis(G2B_HrD->Owner)!=0){
      Message(ITxt(9*3+6*6*4+1,1,&NPCTexts),1);
      CrChangeDialog(G2B_HrD,Mt[0],MnD[0],Mt[1],MnD[1],Mt[2],MnD[2],
                Mt[3],MnD[3],Mt[4],MnD[4],Mt[5],MnD[5],Mt[6],MnD[6]);
    }else{
      AddCreature(G2B_MArrD->Ct,G2B_MArrD->Cn,Mt,MnD);
    }
    for(i=0;i<7;i++){ G2B_MArrA->Cn[i]=MnS[i]; if(MnS[i]<=0) G2B_MArrA->Ct[i]=-1; }
  }while(0);
  RETURNV
}