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
}