?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;------------------------------
  2. ;--интеллект магов (from ZZ0)--
  3.  
  4. AI10    ;священник-охранник
  5.         LD A,R
  6.         AND %1111
  7.         JR NZ,_aiWId
  8.         LD A,(IX+6)
  9.         CP MANA/4
  10.         JR C,_aiWId
  11.         JP itHLTH
  12.  
  13. AI11    ;волшебник-охранник
  14.         LD A,(IX+6)
  15.         CP MANA
  16.         JR C,_aiWId
  17.         LD A,(kmaxW)
  18.         CP 3
  19.         JR C,ai13_1
  20.         JR ai13_3
  21.  
  22. _aiWId  LD L,(IX+14)
  23.         LD H,(IX+15)
  24.         CALL IXt_HL
  25.         JP IX_93
  26.  
  27. _aiWIZ  ;если неудача применения магии
  28.         JP AI03_
  29.  
  30. AI13    ;/священник-атакующий (закл.2->1)
  31.         ;
  32. AI12    ;священник-атакующий (закл.1)
  33.         LD A,(IX+6)
  34.         CP MANA/4
  35.         JR C,_aiWIZ
  36.         ;здоровье/оживл
  37.         CALL itHLTH
  38.         RET NC
  39.         JR _aiWIZ
  40.  
  41. AI14    ;священник-атакующий (закл.3)
  42.         LD A,(kmaxC)
  43.         CP 3
  44.         JR C,AI12
  45.         ;огн.кольцо/хр.шар
  46.         LD A,(IX+6)
  47.         CP MANA
  48.         JR C,_aiWIZ
  49.         CALL itDFND
  50.         RET NC
  51.         JR _aiWIZ
  52.  
  53. AI15    ;волшебник-атакующий (закл 1)
  54.         LD A,(IX+6)
  55.         CP MANA/4
  56.         JR C,_aiWIZ
  57. ai13_1  LD A,1
  58.         JR itCREA
  59.  
  60.  
  61. AI16    ;волшебник-атакующий (закл 2)
  62.         LD A,(kmaxW)
  63.         CP 2
  64.         JR C,AI15
  65.         LD A,(IX+6)
  66.         CP MANA/2
  67.         JR C,_aiWIZ
  68.         CALL itRAIN
  69.         RET NC
  70.         JR _aiWIZ
  71.  
  72.  
  73. AI17    ;волшебник-атакующий (закл 3)
  74.         LD A,(kmaxW)
  75.         CP 3
  76.         JR C,AI16
  77.         LD A,(IX+6)
  78.         CP MANA
  79.         JR C,_aiWIZ
  80. ai13_3  LD A,3
  81.         JR itCREA
  82.  
  83.  
  84. ;-------применяемые заклинания (NC/C-применили/нет)----
  85.  
  86. itCREA  ;создания (A=1/3 - насекомые/монстры)
  87.         LD C,A
  88.         LD A,(IX+4)
  89.         CP 6
  90.         LD A,9
  91.         JR Z,it111
  92.         LD A,12
  93. it111   ADD A,C
  94.         LD (IX+9),A
  95.         RET ;nc
  96.  
  97. itHLTH  ;здоровье/оживл трупов
  98.         CALL HL_IX0
  99.         LD A,(IX+4)
  100.         CP 5
  101.         JR NZ,itTROO
  102.         EXX
  103.         PUSH IX
  104.         CALL loopKb ;w/o B
  105.         LD C,#30
  106. it102   LD A,(IX+0)
  107.         OR A
  108.         JR Z,it103
  109.         LD A,(IX+4)
  110.         LD HL,HEALTH
  111.         CALL WT
  112.         LD A,L
  113.         CP (IX+5) ;требуется лечение?
  114.         JR Z,it103
  115.         EXX
  116.         CALL DIST
  117.         EXX
  118.         CP 16; дистанция
  119.         JR NC,it103
  120.         LD A,(HER_N)
  121.         CP C ;сам на ся?
  122.         JR Z,it103
  123.         CALL HL_IX0
  124.         POP IX
  125.         LD A,16
  126.         JR itACT ;нашли больного
  127. it103   ADD IX,DE
  128.         INC C
  129.         LD A,C
  130.         CP #60
  131.         JR C,it102
  132.         JR itexC
  133.         ;
  134. itTROO  ;оживл трупов
  135.         PUSH IX
  136.         CALL loopHb
  137.         LD C,0
  138. it107   LD A,(IX+0)
  139.         OR A
  140.         JR NZ,it106
  141.         LD A,(IX+1) ;труп?
  142.         OR A
  143.         JR Z,it106
  144.         LD A,(IX+4) ;обычный труп?
  145.         CP 8
  146.         JR NC,it106
  147.         CALL DIST
  148.         CP 20 ;дистанция
  149.         JR NC,it106
  150.         CALL HL_IXt ;коорд трупа
  151.         POP IX ;иди оживляй
  152.         LD A,19
  153.         JR itACT
  154. it106   ADD IX,DE
  155.         INC B
  156.         LD A,B
  157.         CP #60
  158.         JR C,it107
  159. itexC   POP IX
  160.         SCF
  161.         RET ;c-закл не выполн
  162.  
  163. itACT   ;действуй, маг! A-закл, HL-поз, {C-Nцели}
  164.         LD (IX+9),A
  165.         LD (IX+12),C
  166.         LD (IX+8),#80
  167.         XOR A;nc
  168.         JP IXt_HL
  169.  
  170. itDFND  ;защитное кольцо/шар
  171.         PUSH IX
  172.         CALL loopKb
  173.         LD C,#30
  174. it402   LD A,(IX+0)
  175.         OR A
  176.         JR Z,it403
  177.         LD A,(IX+9)
  178.         CP 4
  179.         JR NZ,it403
  180.         CALL HL_IX0
  181.         POP IX
  182.         LD A,(IX+4)
  183.         CP 5
  184.         LD A,18
  185.         JR Z,itACT
  186.         LD A,21
  187.         JR itACT ;нашли атакующего
  188. it403   ADD IX,DE
  189.         INC C
  190.         LD A,C
  191.         CP #60
  192.         JR C,it402
  193.         JR itexC
  194.  
  195. itRAIN  ;огн.дождь/смерч
  196.         PUSH IX
  197.         LD A,(TIC) ;man/blt
  198.         RRCA
  199.         JR C,itRAh
  200.         LD A,R
  201.         AND #1F
  202.         ADD A,8
  203.         CALL B_IX
  204.         CALL HL_IX0
  205.         POP IX
  206.         JR itRA1
  207. itRAh   LD A,R
  208.         AND #3F
  209.         CP 48
  210.         JP NC,itRAh
  211.         CALL N_IX
  212.         CALL HL_IX0
  213.         LD A,(IX+9)
  214.         CP 1
  215.         POP IX
  216.         RET C ;цель не стои'т
  217. itRA1   LD A,L
  218.         CP 1
  219.         RET C ;не нашёл цель
  220.         LD A,(IX+4)
  221.         CP 6
  222.         LD A,11
  223.         JR Z,itACT
  224.         LD A,14
  225.         JP itACT
  226.  
  227.