;------------------------------
 
;--интеллект магов (from ZZ0)--
 
 
 
AI10    ;священник-охранник
 
        LD A,R
 
        AND %1111
 
        JR NZ,_aiWId
 
        LD A,(IX+6)
 
        CP MANA/4
 
        JR C,_aiWId
 
        JP itHLTH
 
 
 
AI11    ;волшебник-охранник
 
        LD A,(IX+6)
 
        CP MANA
 
        JR C,_aiWId
 
        LD A,(kmaxW)
 
        CP 3
 
        JR C,ai13_1
 
        JR ai13_3
 
 
 
_aiWId  LD L,(IX+14)
 
        LD H,(IX+15)
 
        CALL IXt_HL
 
        JP IX_93
 
 
 
_aiWIZ  ;если неудача применения магии
 
        JP AI03_
 
 
 
AI13    ;/священник-атакующий (закл.2->1)
 
        ;
 
AI12    ;священник-атакующий (закл.1)
 
        LD A,(IX+6)
 
        CP MANA/4
 
        JR C,_aiWIZ
 
        ;здоровье/оживл
 
        CALL itHLTH
 
        RET NC
 
        JR _aiWIZ
 
 
 
AI14    ;священник-атакующий (закл.3)
 
        LD A,(kmaxC)
 
        CP 3
 
        JR C,AI12
 
        ;огн.кольцо/хр.шар
 
        LD A,(IX+6)
 
        CP MANA
 
        JR C,_aiWIZ
 
        CALL itDFND
 
        RET NC
 
        JR _aiWIZ
 
 
 
AI15    ;волшебник-атакующий (закл 1)
 
        LD A,(IX+6)
 
        CP MANA/4
 
        JR C,_aiWIZ
 
ai13_1  LD A,1
 
        JR itCREA
 
 
 
 
 
AI16    ;волшебник-атакующий (закл 2)
 
        LD A,(kmaxW)
 
        CP 2
 
        JR C,AI15
 
        LD A,(IX+6)
 
        CP MANA/2
 
        JR C,_aiWIZ
 
        CALL itRAIN
 
        RET NC
 
        JR _aiWIZ
 
 
 
 
 
AI17    ;волшебник-атакующий (закл 3)
 
        LD A,(kmaxW)
 
        CP 3
 
        JR C,AI16
 
        LD A,(IX+6)
 
        CP MANA
 
        JR C,_aiWIZ
 
ai13_3  LD A,3
 
        JR itCREA
 
 
 
 
 
;-------применяемые заклинания (NC/C-применили/нет)----
 
 
 
itCREA  ;создания (A=1/3 - насекомые/монстры)
 
        LD C,A
 
        LD A,(IX+4)
 
        CP 6
 
        LD A,9
 
        JR Z,it111
 
        LD A,12
 
it111   ADD A,C
 
        LD (IX+9),A
 
        RET ;nc
 
 
 
itHLTH  ;здоровье/оживл трупов
 
        CALL HL_IX0
 
        LD A,(IX+4)
 
        CP 5
 
        JR NZ,itTROO
 
        EXX
 
        PUSH IX
 
        CALL loopKb ;w/o B
 
        LD C,#30
 
it102   LD A,(IX+0)
 
        OR A
 
        JR Z,it103
 
        LD A,(IX+4)
 
        LD HL,HEALTH
 
        CALL WT
 
        LD A,L
 
        CP (IX+5) ;требуется лечение?
 
        JR Z,it103
 
        EXX
 
        CALL DIST
 
        EXX
 
        CP 16; дистанция
 
        JR NC,it103
 
        LD A,(HER_N)
 
        CP C ;сам на ся?
 
        JR Z,it103
 
        CALL HL_IX0
 
        POP IX
 
        LD A,16
 
        JR itACT ;нашли больного
 
it103   ADD IX,DE
 
        INC C
 
        LD A,C
 
        CP #60
 
        JR C,it102
 
        JR itexC
 
        ;
 
itTROO  ;оживл трупов
 
        PUSH IX
 
        CALL loopHb
 
        LD C,0
 
it107   LD A,(IX+0)
 
        OR A
 
        JR NZ,it106
 
        LD A,(IX+1) ;труп?
 
        OR A
 
        JR Z,it106
 
        LD A,(IX+4) ;обычный труп?
 
        CP 8
 
        JR NC,it106
 
        CALL DIST
 
        CP 20 ;дистанция
 
        JR NC,it106
 
        CALL HL_IXt ;коорд трупа
 
        POP IX ;иди оживляй
 
        LD A,19
 
        JR itACT
 
it106   ADD IX,DE
 
        INC B
 
        LD A,B
 
        CP #60
 
        JR C,it107
 
itexC   POP IX
 
        SCF
 
        RET ;c-закл не выполн
 
 
 
itACT   ;действуй, маг! A-закл, HL-поз, {C-Nцели}
 
        LD (IX+9),A
 
        LD (IX+12),C
 
        LD (IX+8),#80
 
        XOR A;nc
 
        JP IXt_HL
 
 
 
itDFND  ;защитное кольцо/шар
 
        PUSH IX
 
        CALL loopKb
 
        LD C,#30
 
it402   LD A,(IX+0)
 
        OR A
 
        JR Z,it403
 
        LD A,(IX+9)
 
        CP 4
 
        JR NZ,it403
 
        CALL HL_IX0
 
        POP IX
 
        LD A,(IX+4)
 
        CP 5
 
        LD A,18
 
        JR Z,itACT
 
        LD A,21
 
        JR itACT ;нашли атакующего
 
it403   ADD IX,DE
 
        INC C
 
        LD A,C
 
        CP #60
 
        JR C,it402
 
        JR itexC
 
 
 
itRAIN  ;огн.дождь/смерч
 
        PUSH IX
 
        LD A,(TIC) ;man/blt
 
        RRCA
 
        JR C,itRAh
 
        LD A,R
 
        AND #1F
 
        ADD A,8
 
        CALL B_IX
 
        CALL HL_IX0
 
        POP IX
 
        JR itRA1
 
itRAh   LD A,R
 
        AND #3F
 
        CP 48
 
        JP NC,itRAh
 
        CALL N_IX
 
        CALL HL_IX0
 
        LD A,(IX+9)
 
        CP 1
 
        POP IX
 
        RET C ;цель не стои'т
 
itRA1   LD A,L
 
        CP 1
 
        RET C ;не нашёл цель
 
        LD A,(IX+4)
 
        CP 6
 
        LD A,11
 
        JR Z,itACT
 
        LD A,14
 
        JP itACT