?login_element?

Subversion Repositories NedoOS

Rev

Rev 992 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. GSP60   CALL GSP
  2.         AND #7F
  3.         CP #60
  4.         RET
  5.  
  6. ACTION  LD A,(BZON)
  7.         CP 15
  8.         RET NC
  9.         LD HL,ACTT
  10.         CALL WT
  11.         JP (HL)
  12. ACTT    DEFW ACT_0,SELALI,SELGUN,N_FLR,LIFT,N_MAN,P_MAN
  13.         DEFW NX_MOV,P_FIRE,N_FIRE,MCENTR
  14.         DEFW BYE,C_SAVE,C_LOAD,X_MAN
  15.  
  16. LOOKS   CALL LOOK ;осмотр местности
  17.         CALL LOOK_A ;поиск врагов
  18.         JP LA_OUT
  19.  
  20. MCENTR  CALL CENTR
  21.         CALL LOOKS
  22.         JP ALLSPF
  23.  
  24. P_FIRE  LD A,1 ;приц.стрельба
  25.         JR P_F0
  26. N_FIRE  XOR A  ;норм.стрельба
  27. P_F0    LD (FIRTYP),A
  28. _BRE    CALL MEM7
  29.         CALL BOFF
  30.         CALL PANELM
  31.         CALL BNEW
  32.         JP BOUT
  33.  
  34. N_FLR   LD A,(FLR);смена этажа
  35.         CPL
  36.         AND 1
  37.         CALL FLOOR
  38.         JP ALLSPF
  39.  
  40. SELGUN  ;выбор оружия
  41.         LD A,25
  42.         CALL HER_BA
  43.         LD A,(BX)
  44.         SUB 13
  45.         SRL A
  46.         SRL A
  47.         LD (HL),A
  48.         CALL E_I
  49.         JR _BRE
  50.  
  51. IND_LS   PUSH BC;выв.инд.сохр.
  52.          CALL MEM7
  53.          POP BC
  54.          LD  A,32
  55.          SUB B
  56.          CP 28
  57.          JR C,C_S1
  58.          LD A,27
  59. C_S1     LD E,225
  60.          ADD A,E
  61.          LD E,A
  62.          LD A,D
  63.          LD D,+(ATR+512)/256
  64.          LD (DE),A
  65.          RET
  66.  
  67. C_SAVE  LD A,(FLR)
  68.         LD (OLDFLR),A
  69.         LD HL,#E000 ;RAM-save
  70.         LD BC,#2000
  71. C_S0    PUSH BC
  72.         CALL PT128
  73.         LD D,(HL)
  74.         CALL MEM7
  75.         LD (HL),D
  76.         POP BC
  77.         INC HL
  78.         DEC C
  79.         JR NZ,C_S0
  80.         LD D,#57
  81.         CALL IND_LS
  82.         DEC B
  83.         JR NZ,C_S0
  84.         LD HL,B_DAT
  85.         LD DE,#DB00
  86.         LD BC,#100
  87.         LDIR
  88.         LD HL,MAN
  89.         LD BC,#400
  90.         LDIR
  91. L_Sr    CALL MEM7
  92.         ATRs #1700,#1D01,#68
  93.         JP PT128
  94.  
  95. C_LOAD  LD HL,#E000 ;RAM-load
  96.         LD BC,#2000
  97. C_L0    PUSH BC
  98.         CALL MEM7
  99.         LD D,(HL)
  100.         CALL PT128
  101.         LD (HL),D
  102.         POP BC
  103.         INC HL
  104.         DEC C
  105.         JR NZ,C_L0
  106.         LD D,#4D
  107.         CALL IND_LS
  108.         DEC B
  109.         JR NZ,C_L0
  110.         CALL MEM7
  111.         LD DE,B_DAT
  112.         LD HL,#DB00
  113.         LD BC,B_LEN
  114.         LDIR
  115.         LD DE,MAN
  116.         LD HL,#DC00
  117.         LD BC,#400
  118.         LDIR
  119.         CALL PT128
  120.         LD A,(OLDFLR)
  121.         LD HL,(X0)
  122.         EXX
  123.         CALL FLOOR
  124.         EXX
  125.         LD (X0),HL
  126.         CALL ALLSPF
  127.         CALL PANELM
  128.         JR L_Sr
  129.  
  130. MUb     DEFW #202,#4918
  131. BYE     ;эвакуация
  132.         LD IX,MUb
  133.         CALL S_BACK
  134.         CALL STD
  135.         CALL MENU
  136.         CALL S_COPY
  137.         CALL YES_NO
  138.         LD A,1
  139.         JP Z,BATRET
  140.         CALL ALLSPF
  141.         CALL VZLOM
  142.         CALL ATREST
  143.         JP OUTDSC
  144.  
  145. N_MAN   LD HL,HER_N ;след.чел.
  146.         LD A,(HL)
  147.         INC A
  148.         CP 32
  149.         JR C,N_M1
  150.         XOR A
  151. N_M1    CALL NEWHER
  152.         PUSH HL
  153.         POP IX
  154.         CALL HERLIV
  155.         JR Z,N_MAN
  156.         LD A,(IX+5)
  157.         OR A
  158.         JR Z,PN_M
  159.         JR N_MAN
  160.  
  161. P_MAN   LD HL,HER_N ;пред.чел.
  162.         LD A,(HL)
  163.         OR A
  164.         JR NZ,P_M1
  165.         LD A,32
  166. P_M1    DEC A
  167.         CALL NEWHER
  168.         PUSH HL
  169.         POP IX
  170.         CALL HERLIV
  171.         JR Z,P_MAN
  172.         LD A,(IX+5)
  173.         OR A
  174.         JR NZ,P_MAN
  175. PN_M    CALL CENTR
  176.         CALL LOOKS
  177.         CALL ALLSPF
  178.         JP _BRE
  179.  
  180. BEEP    LD A,10
  181.         CALL SOUNDn
  182.         LD BC,#1708;ЗВУК
  183. BEP1    LD A,C
  184.         XOR #18
  185.         LD C,A
  186.         OUT (254),A
  187.         LD D,2
  188. BEP0    DEC DE
  189.         LD A,E
  190.         OR D
  191.         JR NZ,BEP0
  192.         DJNZ BEP1
  193.         RET
  194.  
  195. X_MAN   ;Вдача парам. бойцов
  196.         LD IX,(HER_AD)
  197.         LD A,(IX+4)
  198.         OR (IX+5)
  199.         JR NZ,BEEP
  200.         LD A,(HER_N)
  201.         RLCA
  202.         RLCA
  203.         LD HL,AQNAVT
  204.         CALL DD
  205.         LD (SOLD_D),HL
  206.         LD A,H
  207.         LD (B_DRAW),A
  208.         CALL DRAW_P
  209.         XOR A
  210.         LD (B_DRAW),A
  211.         CALL CHNGRG
  212.         BYTs #1C,#410,#FF
  213.         LD A,#14
  214.         LD (Db),A
  215.         LD (HIGH),A
  216.         LD B,6
  217.         LD HL,#40A
  218.         LD IX,(HER_AD)
  219. XDWP    PUSH BC
  220.         PUSH HL
  221.         CHNs NOP_
  222.         LD (SX),HL
  223.         LD A,(IX+11)
  224.         CALL WB
  225.         LD A,(Db)
  226.         ADD A,16
  227.         LD (Db),A
  228.         LD D,A
  229.         LD E,#71
  230.         LD H,0
  231.         LD A,(IX+11)
  232.         INC IX
  233.         OR A
  234.         JR Z,XDR5
  235.         LD L,A
  236.         DEC L
  237.         ADD HL,DE
  238.         LD B,9
  239.         CHNs XOR_
  240. XDR4    CALL LINE
  241.         INC H
  242.         INC D
  243.         DJNZ XDR4
  244. XDR5    POP HL
  245.         INC H
  246.         INC H
  247.         POP BC
  248.         DJNZ XDWP
  249.         LD A,(IX+20);Freez
  250.         ADD A,#71
  251.         LD L,A
  252.         LD E,L
  253.         LD H,69
  254.         LD D,69+6
  255.         CALL LINE
  256.         XOR A
  257.         LD (HIGH),A
  258.         CALL XN_MAN
  259.         CALL COPYAT
  260. XDR6    CALL CONTR
  261.         OR A
  262.         JR Z,XDR6
  263.         RRCA
  264.         JR C,XDnx
  265.         RRCA
  266.         JR C,XDpr
  267.         AND 4
  268.         JR Z,XDR6
  269.         CALL PANEL1
  270.         CALL CENTR
  271.         CALL LOOKS
  272.         CALL ALLSPF
  273.         CALL PANELM
  274.         JP BNEW
  275. XDnx    LD HL,HER_N
  276.         LD A,(HL)
  277.         INC A
  278.         CP 10
  279.         JR C,XDR7
  280.         XOR A
  281. XDR7    CALL NEWHER
  282.         PUSH HL
  283.         POP IX
  284.         CALL HERLIV
  285.         JR Z,XDnx
  286.         LD A,(IX+4)
  287.         OR (IX+5)
  288.         JR NZ,XDnx
  289. XDDR    JP X_MAN
  290. XDpr    LD HL,HER_N
  291.         LD A,(HL)
  292.         OR A
  293.         JR NZ,XDR8
  294.         LD A,10
  295. XDR8    DEC A
  296.         CALL NEWHER
  297.         PUSH HL
  298.         POP IX
  299.         CALL HERLIV
  300.         JR Z,XDpr
  301.         LD A,(IX+5)
  302.         OR (IX+4)
  303.         JR NZ,XDpr
  304.         JR XDDR
  305.  
  306. XN_MAN  ;число активных акв
  307.         LD HL,#1600
  308.         LD (SX),HL
  309.         LD A,201
  310.         CALL NWRDM
  311.         LD IX,MAN
  312.         LD DE,32
  313.         LD BC,#A00
  314. XNM1    CALL HERLIV
  315.         JR Z,XNM0
  316.         LD A,(IX+5)
  317.         OR (IX+4)
  318.         JR NZ,XNM0
  319.         INC C
  320. XNM0    ADD IX,DE
  321.         DJNZ XNM1
  322.         LD A,C
  323.         JP WB
  324.        
  325. T_LIFT  DEFB #FF
  326. LIFTYP  ;тип лифта в HL (0-oбычн, 1-по Х, 2-по Y, FF-нет)
  327.         LD (TX),HL
  328.         CALL ATSPM
  329.         AND %11100
  330.         CP %10000 ;lift
  331.         LD A,0
  332.         JR Z,LYret
  333.         LD A,(FLR)
  334.         OR A
  335.         JR Z,LY0
  336.         LD HL,TX
  337.         DEC (HL)
  338.         CALL ATSPM
  339.         AND %11100
  340.         CP %01000
  341.         LD A,1
  342.         JR Z,LYret
  343.         INC (HL)
  344.         INC HL
  345.         DEC (HL)
  346.         CALL ATSPM
  347.         AND %11100
  348.         CP %01100
  349.         LD A,#FF
  350.         JR NZ,LYret
  351.         LD A,2
  352. LYret   LD (T_LIFT),A
  353.         RET
  354. LY0     INC A
  355.         CALL FLOOR
  356.         LD HL,TX
  357.         INC (HL)
  358.         CALL ATSPM
  359.         AND %11100
  360.         CP %01000
  361.         LD A,1
  362.         JR Z,LYret1
  363.         DEC (HL)
  364.         INC HL
  365.         INC (HL)
  366.         CALL ATSPM
  367.         AND %11100
  368.         CP %01100
  369.         LD A,#FF
  370.         JR NZ,LYret1
  371.         LD A,2
  372. LYret1  PUSH AF
  373.         XOR A
  374.         CALL FLOOR
  375.         POP AF
  376.         JR LYret
  377.  
  378. LIFTd   DEFB 0
  379.  
  380. CANDWN  ;можно ли вниз/вверх? (NC-yes) HL-new coord LIFTd-dir
  381.         LD A,(FLR)
  382.         PUSH AF
  383.         LD IX,(HER_AD)
  384.         LD A,(IX+2)
  385.         CALL FLOOR
  386.         CALL GET_XY
  387.         PUSH HL
  388.         CALL LIFTYP
  389.         POP HL
  390.         CP 3
  391.         JR C,Cw1
  392. CwBAD   POP AF
  393.         CALL FLOOR
  394.         SCF
  395.         RET
  396. Cw1     OR A
  397.         JR NZ,Cw2
  398.         CPL
  399. CwOK    LD (LIFTd),A
  400.         LD A,(FLR)
  401.         XOR 1
  402.         CALL FLOOR
  403.         LD (TX),HL
  404.         CALL GSP60
  405.         JR C,Cw5
  406.         PUSH HL
  407.         PUSH IX
  408.         SUB #60
  409.         CALL GET_IX
  410.         CALL HERLIV
  411.         POP IX
  412.         POP HL
  413.         JR NZ,CwBAD
  414. Cw5     POP AF
  415.         CALL FLOOR
  416.         XOR A
  417.         RET
  418. Cw2     CP 2
  419.         LD A,(FLR)
  420.         JR Z,Cw6
  421.         OR A
  422.         JR NZ,Cw3
  423.         INC L
  424.         INC L
  425.         XOR A
  426.         JR CwOK
  427. Cw3     DEC L
  428.         DEC L
  429.         LD A,4
  430.         JR CwOK
  431. Cw6     OR A
  432.         JR NZ,Cw4
  433.         INC H
  434.         INC H
  435.         LD A,6
  436.         JR CwOK
  437. Cw4     DEC H
  438.         DEC H
  439.         LD A,2
  440.         JR CwOK
  441.  
  442. LIFT    ;Лифт/Лестница
  443.         CALL CANDWN
  444.         JP C,BEEP
  445.         PUSH HL
  446.         LD DE,#800
  447.         CALL DECPAR
  448.         POP HL
  449.         RET C
  450.         PUSH HL
  451.         LD A,(IX+2)
  452.         PUSH AF
  453.         CALL FLOOR
  454.         CALL GET_XY
  455.         LD (TX),HL
  456.         LD A,(IX+7)
  457.         CALL PSP
  458.         POP AF
  459.         POP HL
  460.         LD (IX),L
  461.         LD (IX+1),H
  462.         XOR 1
  463.         LD (IX+2),A
  464.         CALL FLOOR
  465.         LD A,(LIFTd)
  466.         CP 8
  467.         JR NC,Li1
  468.         LD (IX+3),A
  469. Li1     LD (TX),HL
  470.         CALL GSP60
  471.         JR C,Li11
  472.         SUB #60 ;если труп в лифте
  473.         CALL GET_AD
  474.         LD A,7
  475.         CALL BA
  476.         AND #7F
  477. Li11    LD (IX+7),A
  478.         LD A,(HER_N)
  479.         ADD A,#60
  480.         CALL PSP
  481.         JP MCENTR
  482.  
  483. ACT_0   ;указание на поле (ходить или выбрать персонажа)
  484.         ;jr $
  485.         LD HL,(PPX) ;координаты курсора
  486.         LD (TX),HL ;текущие координаты тайла
  487.         CALL GSP60 ;проверяем, что текущий тайл >=#60 (акванавт) - это выбор
  488.         JP NC,ACT_H
  489.         CALL ATSP_
  490.         BIT 5,A
  491.         JP Z,BEEP
  492.         CALL GET_DE
  493.         LD A,(FLR)
  494.         CP (HL)
  495.         JP NZ,BEEP
  496.         LD A,(HL)
  497.         LD (OLDFLR),A
  498.         PUSH DE
  499.         LD HL,(PPX)
  500.         CALL TRACE1
  501.         POP DE
  502.         JP C,BEEP
  503.         PUSH DE
  504.         CALL TRACE2
  505.         PUSH DE
  506. AC_MV   LD A,(DE)
  507.         CP 8
  508.         JR NC,AC_RET
  509.         AND 1
  510.         PUSH DE
  511.         PUSH AF
  512.         CALL OUTDSC
  513.         POP AF
  514.         LD DE,#402
  515.         JR Z,AC_MV4
  516.         LD DE,#603
  517. AC_MV4  CALL DECPAR;====
  518.         JR NC,AC_MV6
  519.         POP DE
  520. AC_RET  XOR A
  521.         LD (isLOOK),A
  522.         CPL
  523.         LD (DE),A
  524.         CALL OUTDSC
  525.         POP BC ;tab
  526.         POP DE ;coord
  527. AC_ML0  LD A,(BC)
  528.         CP 8
  529.         JR NC,AC_ML1
  530.         LD HL,NXtXY
  531.         CALL WT
  532.         LD (AC_NXT),HL
  533.         EX DE,HL
  534. AC_NXT  DEC L
  535.         DEC H
  536.         EX DE,HL
  537.         LD A,(OLDFLR)
  538.         OR A
  539.         LD A,(BC)
  540.         PUSH BC
  541.         PUSH DE
  542.         CALL LOOK_
  543.         POP DE
  544.         POP BC
  545.         DEC BC
  546.         JR AC_ML0
  547. AC_ML1  LD A,(isLOOK)
  548.         LD HL,(isNEW)
  549.         OR L
  550.         CALL NZ,ALLSPF
  551.         JP LA_OUT
  552. AC_MV2  CALL OUTDSC
  553.         CALL LA_OUT
  554. AC_MV6  CALL PBU
  555.         POP DE
  556.         LD A,(DE)
  557.         PUSH DE
  558.         CALL HERMOV
  559.         JR C,AC_MV2
  560.         POP DE
  561.         DEC DE
  562.         BIT 7,(IX+7)
  563.         JR NZ,ACstop
  564.         PUSH DE
  565.         CALL LOOK_A
  566.         POP DE
  567.         JR Z,AC_MV
  568. ACstop  LD A,255
  569.         LD (DE),A
  570.         JR AC_MV
  571.  
  572. ACT_H   SUB #60
  573.         LD C,A ;номер персонажа
  574.         CALL GET_IX
  575.         CALL HERLIV
  576.         JP Z,BEEP
  577.         LD A,(IX+5)
  578.         OR A
  579.         JP NZ,BEEP
  580.         LD A,C
  581.         CALL NEWHER
  582.         CALL BNEW
  583.         CALL PANELM
  584.         CALL LOOKS
  585.         LD A,(isLOOK)
  586.         OR A
  587.         CALL NZ,ALLSPF
  588.         JP OUTDSC
  589.  
  590. LOOKER  LD BC,#FDFE  ;осмотр ПО напр
  591.         IN A,(C)
  592.         AND 2   ;кл.S
  593.         JR Z,LOKOK
  594.         LD A,(CONTRB)
  595.         AND %1000000
  596.         RET Z
  597. LOKOK   CALL GETZON
  598.         LD A,(BZON)
  599.         OR A
  600.         RET NZ
  601. LOKK    LD IX,(HER_AD)
  602.         CALL GET_XY
  603.         CALL DIRF
  604.         CP #FE
  605.         RET Z
  606.         LD D,(IX+3)
  607.         SUB D
  608.         JP Z,ALLSPF
  609.         LD E,A
  610.         PUSH DE
  611.         LD DE,#100
  612.         CALL DECPAR
  613.         JR NC,LKK9
  614.         POP AF
  615. LKKR    JP ALLSPF
  616. LKK9    POP DE
  617.         LD A,E
  618.         AND 7
  619.         CP 4
  620.         LD A,D
  621.         JR NC,LKK1
  622.         INC A
  623.         INC A
  624. LKK1    DEC A
  625.         AND 7
  626.         LD (IX+3),A
  627.         LD A,(FLR)
  628.         PUSH AF
  629.         LD A,(IX+2)
  630.         CALL FLOOR
  631.         CALL LOOKS
  632.         CALL ALLSPF
  633.         CALL OUTDSC
  634.         POP AF
  635.         CALL FLOOR
  636.         LD A,(isNEW)
  637.         OR A
  638.         JR Z,LOKK
  639.         JR LKKR
  640.  
  641. DIR     LD DE,(PPX)
  642. DIR_    LD A,D ;направл HL->DE
  643.         CP #C0
  644.         JR C,LK2
  645.         XOR A
  646. LK2     SUB H
  647.         EX AF,AF
  648.         LD A,E
  649.         CP #C0
  650.         JR C,LK3
  651.         XOR A
  652. LK3     SUB L
  653.         JR Z,LK0
  654.         JR C,LK1
  655.         EX AF,AF
  656.         LD A,0
  657.         RET Z
  658.         LD A,1
  659.         RET C
  660.         LD A,7
  661.         RET
  662. LK0     EX AF,AF
  663.         LD A,#FE
  664.         RET Z
  665.         LD A,2
  666.         RET C
  667.         LD A,6
  668.         RET
  669. LK1     EX AF,AF
  670.         LD A,4
  671.         RET Z
  672.         LD A,3
  673.         RET C
  674.         LD A,5
  675.         RET
  676.  
  677. DIRF    ;dir с равномерными секторами
  678.         CALL DIR
  679.         BIT 0,A
  680.         RET Z
  681.         PUSH AF
  682.         LD A,E
  683.         SUB L
  684.         JR NC,RF1
  685.         NEG
  686. RF1     LD L,A
  687.         LD A,D
  688.         SUB H
  689.         JR NC,RF2
  690.         NEG
  691. RF2     LD H,A
  692.         SLA A
  693.         CP L
  694.         JR C,RFM1
  695.         LD A,L
  696.         SLA A
  697.         CP H
  698.         JR C,RFM2
  699.         POP AF
  700.         RET
  701. RFT1    DEFB 0,4,4,0
  702. RFT2    DEFB 2,2,6,6
  703. RFM1    LD HL,RFT1
  704.         JR RFM0
  705. RFM2    LD HL,RFT2
  706. RFM0    POP AF
  707.         SRA A
  708.         JP BA
  709.        
  710.  
  711. ENDBAT  LD HL,0 ;КОНЕЦ БОЯ?
  712.         LD B,32
  713.         LD IX,MAN
  714.         LD DE,32
  715. EB1     CALL HERLIV
  716.         JR Z,EB0
  717.         LD A,(IX+5)
  718.         OR A
  719.         JR NZ,EB2
  720.         INC L
  721.         JR EB0
  722. EB2     INC H
  723. EB0     ADD IX,DE
  724.         DJNZ EB1
  725.         LD A,L
  726.         OR A
  727. EB3     JP Z,BATRET
  728.         LD A,H
  729.         OR A
  730.         LD A,2
  731.         JR Z,EB3
  732.         RET
  733.  
  734. CURGUN  LD A,25 ;N тек оруж (NC-нет)
  735.         CALL HER_BA
  736.         ADD A,17
  737.         CALL HER_BA
  738.         LD (G_TYPE),A
  739.         CP 200
  740.         RET
  741.  
  742. GUN_BT  ;поле А текущ. оружия /0
  743.         PUSH HL
  744.         PUSH AF
  745.         LD A,(G_TYPE)
  746. ;CUR_g  ;CALL CURGUN
  747.         CP 200
  748.         JR C,GUT1
  749.         POP AF
  750.         POP HL
  751.         XOR A
  752.         RET
  753. GUT1    RLCA
  754.         RLCA
  755.         RLCA
  756.         LD L,A
  757.         POP AF
  758.         ADD A,L
  759.         LD HL,WEAPON
  760.         CALL BA
  761.         POP HL
  762.         RET
  763.  
  764. GUNTIM  ;вычисл G_TIME
  765.         CALL CURGUN
  766.         LD A,(FIRTYP)
  767.         CALL GUN_BT
  768.         LD E,A
  769.         LD A,27
  770.         CALL HER_BA
  771.         LD L,A
  772.         CALL MULB
  773.         LD L,100
  774.         CALL DIVB2
  775.         LD A,E
  776.         LD (G_TIME),A
  777.         RET
  778.  
  779. GUNOUT  ;выв. G_TIME
  780.         CALL GUNTIM
  781.         CALL WTRB
  782.         LD BC,FONT
  783.         LD HL,DCS+8
  784.         LD DE,#120D
  785.         LD A,2
  786.         JP PRINT
  787.  
  788. REPAR   ;восст. парам текущ гер
  789.         LD A,27 ;TU=TUold
  790.         CALL HER_BA
  791.         PUSH HL
  792.         LD C,A
  793.         LD A,11
  794.         CALL HER_BA
  795.         LD B,(HL)
  796.         LD (HL),C
  797.         INC HL ;EN=EN+ENold/4+TUостаток/4
  798.         POP DE
  799.         INC DE
  800.         LD A,(DE)
  801.         SRL B
  802.         SRL A
  803.         ADD A,B
  804.         SRL A
  805.         ADD A,(HL)
  806.         LD (HL),A
  807.         LD A,(DE)
  808.         JR C,REPA4
  809.         CP (HL)
  810.         JR NC,REPA1
  811. REPA4   LD (HL),A
  812. REPA1   INC HL
  813.         LD A,(HL) ;HEALTH=HEALTH-WOUND
  814.         INC HL
  815.         SUB (HL)
  816.         JR NC,REPA2
  817.         XOR A
  818. REPA2   DEC HL
  819.         LD (HL),A
  820.         OR A
  821.         JR Z,REPFW
  822.         INC HL
  823.         INC HL
  824.         LD A,(HL) ;MORAL (+6)
  825.         ADD A,6
  826.         LD (HL),A
  827.         INC DE
  828.         INC DE
  829.         INC DE
  830.         LD A,(DE)
  831.         CP (HL)
  832.         RET NC
  833.         LD (HL),A
  834.         RET
  835.  
  836. REPFW   ;смерть от F.WOUND
  837.         LD A,4
  838.         CALL HER_BA
  839.         OR A
  840.         RET NZ
  841.         CALL CENTR4
  842.         CALL ALLSPF
  843.         CALL OUTDSC
  844.         LD A,8
  845.         CALL HER_BA
  846.         LD (MU68+4),A
  847.         LD IX,MU68
  848.         JR S_MENU
  849.  
  850. CENTR4  CALL CENTR ;центрир на 4 вниз
  851.         LD HL,X0
  852.         DEC (HL)
  853.         DEC (HL)
  854.         DEC (HL)
  855.         DEC (HL)
  856.         INC HL
  857.         DEC (HL)
  858.         DEC (HL)
  859.         DEC (HL)
  860.         DEC (HL)
  861.         RET
  862.  
  863. MU68    DEFW #203,#4416
  864.         DEFB 0
  865.  
  866. S_BACK  CALL MEM7 ;экр в DSCR
  867.         CALL BACK
  868. S_bc    JP PT128
  869.  
  870. S_COPY  CALL MEM7 ;DSCR в экр
  871.         CALL COPYAT
  872.         JR S_bc
  873.  
  874. ATREST  CALL MEM7 ;восст атр экр
  875.         CALL STS
  876.         LD HL,#101
  877.         LD BC,#1C10
  878.         LD A,(COLOR)
  879.         CALL ATRBAR
  880.         JP PT128
  881.  
  882. S_MENU  CALL S_BACK ;меню в бою
  883.         CALL STD
  884.         CALL MENU
  885.         CALL S_COPY
  886.         CALL TMOF
  887.         CALL ALLSPF
  888.         CALL ATREST
  889.         JP OUTDSC
  890.  
  891. DECGUN ;dec парам при выстреле
  892.         CALL CURGUN
  893.         CP 10
  894.         JR Z,DG1
  895.         INC HL
  896.         INC HL
  897.         INC HL
  898.         INC HL
  899.         LD A,(HL)
  900.         OR A
  901.         JR  NZ,DG2
  902.         LD A,6
  903.         CALL GUN_BT
  904.         OR A
  905.         JR  Z,DG30
  906.         CALL MANALI
  907.         JR NZ,DG9
  908.         CALL MEM7
  909.         LD B,3
  910. DG7     PUSH BC ;нет патронов
  911.         LD A,#55
  912.         CALL DGB
  913.         LD A,#70
  914.         CALL DGB
  915.         POP BC
  916.         DJNZ DG7
  917.         CALL PT128
  918. DG9     SCF
  919.         RET C
  920. DGB     LD HL,ATR+717
  921.         LD (HL),A
  922.         PUSH HL
  923.         POP DE
  924.         INC DE
  925.         LD BC,15
  926.         LDIR
  927.         LD B,5
  928. DGB1    CALL E_I
  929.         DJNZ DGB1
  930.         RET
  931. DG2     DEC (HL)
  932.         CALL DGGU
  933.         JR NC,DG3
  934.         INC (HL)
  935.         RET
  936. DG30    CALL DGGU
  937.         RET C
  938. DG3     CALL MANALI
  939.         RET NZ
  940.         CALL CURGUN
  941.         LD HL,WP_PRC
  942.         CALL WT
  943.         LD IX,DOLG
  944.         CALL INCR
  945.         OR A
  946.         RET
  947.  
  948. DGGU    PUSH HL
  949.         CALL GUNTIM
  950.         LD D,A
  951.         LD E,0
  952.         CALL DECPAR
  953.         POP HL
  954.         RET
  955.  
  956. DG1     CALL DGGU
  957.         RET C
  958.         LD (HL),#FF ;граната
  959.         RET
  960.  
  961. MANALI  LD A,5;наш/не наш - Z/NZ
  962.         CALL HER_BA
  963.         OR A
  964.         RET
  965.  
  966. GUN14   ;супервизор
  967.         CALL DECGUN
  968.         RET C
  969.         CALL STD
  970.         CALL OFFD
  971.         LD HL,(HER_AD)
  972.         LD A,(HL)
  973.         SUB 13
  974.         LD E,A
  975.         INC HL
  976.         LD A,(HL)
  977.         SUB 11
  978.         LD D,A
  979.         INC HL
  980.         LD A,(HL)
  981.         CALL FLOOR
  982.         EX DE,HL
  983.         LD DE,#2
  984.         PUSH DE
  985.         LD C,23
  986. G140    LD B,27
  987.         PUSH HL
  988.         PUSH DE
  989. G141    PUSH BC
  990.         PUSH HL
  991.         LD (TX),HL
  992.         CALL GSP
  993.         LD C,2
  994.         CP C
  995.         JR C,G14E
  996.         CP #80
  997.         JR C,G146
  998.         AND #7F
  999.         CP #60
  1000.         JR C,G14E
  1001.         LD C,11
  1002.         JR NC,G14H
  1003. G146    CP #60
  1004.         JR C,G143
  1005.         LD C,1
  1006. G14H    SUB #60
  1007.         CALL GET_IX
  1008.         CALL HERLIV
  1009.         JR Z,G14E
  1010.         DEC C
  1011.         JR G14E
  1012. G143    CALL ATSPM
  1013.         LD B,A
  1014.         AND %11100
  1015.         LD C,9
  1016.         CP %00100 ;дверь
  1017.         JR Z,G14E
  1018.         DEC C
  1019.         CP %10000 ;лифт
  1020.         JR Z,G14E
  1021.         DEC C
  1022.         CP %01100 ;л1
  1023.         JR Z,G14E
  1024.         DEC C
  1025.         CP %01000 ;л2
  1026.         JR Z,G14E
  1027.         DEC C
  1028.         LD A,B
  1029.         AND %10100000
  1030.         CP %10100000    ;V&M
  1031.         JR Z,G14E
  1032.         DEC C
  1033.         OR A    ;~V&~M
  1034.         JR Z,G14E
  1035.         DEC C
  1036. G14E    LD HL,SX
  1037.         LD (HL),C
  1038.         Ms 3
  1039.         LD A,1
  1040.         LD BC,xMAP
  1041.         CALL PRINT
  1042.         CALL PT128
  1043.         POP HL
  1044.         POP BC
  1045.         INC L
  1046.         DJNZ G141
  1047.         POP DE
  1048.         POP HL
  1049.         INC D
  1050.         INC H
  1051.         DEC C
  1052.         JR NZ,G140
  1053.         POP HL
  1054.         LD BC,#2018
  1055.         LD A,#58
  1056.         CALL ATRBAR
  1057.         LD BC,#1B17
  1058.         LD L,2
  1059.         LD A,#69
  1060.         CALL ATRBAR
  1061.         LD A,#6A
  1062.         LD (DATR+367),A
  1063.         CHNs XOR_
  1064.         LD HL,#02E9
  1065.         LD DE,#B9E9
  1066.         CALL LINE
  1067.         DEC E
  1068.         LD HL,#B912
  1069.         CALL LINE
  1070.         CALL S_COPY
  1071.         CALL TMOF
  1072.         CALL PANEL1
  1073.         CALL PANELM
  1074.         CALL CENTR
  1075.         CALL ALLSPF
  1076.         JP OUTDSC
  1077.  
  1078. FIR_T   DEFW    G_NORM,G_BOOM,G_BOOM,G_BOOM,G_NORM,G_TOCH,G_TOCH
  1079.         DEFW    G_BOOM,G_NORM,G_NORM,GRENAD,G_TOCH,GUN12,G_TOCH,GUN14
  1080.         DEFW    0,G_TOCH
  1081.  
  1082. FIRER   ;Cтрельба
  1083.         LD BC,#FEFE
  1084.         IN A,(C)
  1085.         RRA
  1086.         JR NC,FROK
  1087.         LD A,(CONTRB)
  1088.         AND %100000
  1089.         RET Z
  1090. FROK    LD HL,(X0)
  1091.         LD (X0old),HL
  1092.         CALL GET_DE
  1093.         LD HL,(PPX)
  1094.         AND A
  1095.         SBC HL,DE
  1096.         JP Z,BEEP
  1097.         CALL CURGUN
  1098.         JP NC,BEEP
  1099.         LD HL,FIR_T
  1100.         CALL WT
  1101.         LD (FIR_C+1),HL
  1102.         LD A,1
  1103.         LD (afterE),A
  1104.         CALL GETZON
  1105.         LD A,(BZON)
  1106.         OR A  ;NZ-вне поля
  1107. FIR_C   CALL FROK
  1108.         CALL ENDBAT
  1109.         CALL T_DEAD
  1110.         JP _BRE
  1111.  
  1112. T_DEAD  ;текущ герой умер?
  1113.         LD IX,(HER_AD)
  1114.         CALL HERLIV
  1115.         RET NZ
  1116.         CALL OUTDSC
  1117.         JP HER1st
  1118.  
  1119. X0old   DEFW 2
  1120. FLRold  DEFB 1
  1121. afterE  DEFB 1 ;не 0-выполнить afterF
  1122. afterF  LD HL,afterE
  1123.         LD A,(HL)
  1124.         LD (HL),1
  1125.         OR A
  1126.         RET Z
  1127.         PUSH IX
  1128.         XOR A ;просмотр/центровка после выстрела
  1129.         LD (isLOOK),A
  1130.         LD A,(FLR)
  1131.         PUSH AF
  1132.         CALL LOOKS
  1133.         POP AF
  1134.         CALL FLOOR
  1135.         LD HL,(X0old)
  1136.         LD DE,(X0)
  1137.         LD (X0),HL
  1138.         XOR A
  1139.         SBC HL,DE
  1140.         JR Z,FIR_0
  1141.         INC A
  1142.         JR FIR_1
  1143. FIR_0   LD A,(isLOOK)
  1144. FIR_1   OR A
  1145.         CALL NZ,ALLSPF
  1146.         POP IX
  1147.         RET
  1148.  
  1149. DECHER  ;уменьш. парам при выстреле
  1150.         ;(A-F.WOUND,D-HEALTH,E-FREEZE)
  1151.         EX AF,AF
  1152.         LD A,(IX+10)
  1153.         OR A
  1154.         JR Z,DEH5
  1155.         LD B,A ;защита ослабит удар
  1156.         LD A,D
  1157.         SRL D
  1158.         SRL D
  1159. DEH6    SUB D
  1160.         DJNZ DEH6
  1161.         LD D,A
  1162. DEH5    EX AF,AF
  1163.         ADD A,(IX+14)
  1164.         LD (IX+14),A
  1165.         LD A,(IX+13)
  1166.         SUB D
  1167.         JR NC,DEH1
  1168.         XOR A
  1169. DEH1    LD (IX+13),A
  1170.         LD A,(IX+26)
  1171.         ADD A,E
  1172.         CP 220
  1173.         JR C,DEH2
  1174.         LD A,220
  1175. DEH2    LD (IX+26),A
  1176.         LD A,(IX+4)
  1177.         OR A
  1178.         RET NZ
  1179.         CALL RND ;понижение морали для людей
  1180.         AND %101010
  1181.         RET NZ
  1182.         CALL RND
  1183.         AND 4
  1184.         INC A
  1185.         ADD A,(IX+13)
  1186.         CP 20
  1187.         JR NC,DEH8
  1188.         LD (IX+13),A
  1189. DEH8    CALL RND
  1190.         AND 31
  1191.         ADD A,22
  1192.         LD E,A
  1193.         LD A,(IX+15)
  1194.         SUB E
  1195.         JR NC,DEH7
  1196.         XOR A
  1197. DEH7    LD (IX+15),A
  1198.         RET
  1199.  
  1200. FWOUND  DEFB 0,0,3,1,0,0,1,2,1,2,1,0,0,0
  1201. G_HeFr  ;dHEALTH->D;dFREEZE->E;dF_WOUND->A
  1202.         LD A,4
  1203.         CALL GUN_BT
  1204.         LD D,A
  1205.         LD A,5
  1206.         CALL GUN_BT
  1207.         LD E,A
  1208.         CALL RND
  1209.         AND %101 ;понижение D в 25%
  1210.         JR NZ,G_H1
  1211.         SRL D
  1212.         CALL RND
  1213.         AND %10000
  1214.         JR NZ,G_H1
  1215.         SRL D
  1216. G_H1    CALL RND
  1217.         AND %100 ;0->FW в 50%
  1218.         RET Z
  1219.         LD A,(G_TYPE)
  1220.         LD HL,FWOUND
  1221.         CALL BA
  1222.         RET
  1223.  
  1224. G_TOCH  ;контактное оруж.
  1225.         LD IX,(HER_AD)
  1226.         LD A,(IX+2)
  1227.         CALL FLOOR
  1228.         CALL NEXTXY
  1229.         LD (TX),HL
  1230.         LD (FX2),HL
  1231.         CALL GSP60
  1232.         JR C,G_ERR1
  1233.         SUB #60
  1234.         CALL GET_IX
  1235.         CALL HERLIV
  1236.         JR Z,G_ERR1
  1237.         PUSH IX
  1238.         CALL DECGUN
  1239.         POP IX
  1240.         RET C
  1241.         LD A,(G_TYPE)
  1242.         CP 13
  1243.         JR Z,GUN13
  1244.         CP 16
  1245.         JP Z,G_TENT
  1246.         CALL afterF
  1247.         CALL FLASHs
  1248.         CALL FLASHs
  1249.         CALL FLASHs
  1250.         CALL FLASHs
  1251.         CALL G_HeFr
  1252.         CALL DECHER
  1253.         JP ALLSPF
  1254.  
  1255. G_ERR1  LD IX,MU58
  1256.         JP S_MENU
  1257. GUN13   LD A,(IX+14) ;релакс
  1258.         OR A
  1259.         JR Z,G130
  1260.         DEC (IX+14)
  1261. G130    LD A,(IX+13)
  1262.         ADD A,10
  1263.         LD B,(IX+29)
  1264.         CP B
  1265.         JR C,G131
  1266.         LD A,B
  1267. G131    LD (IX+13),A
  1268.         CALL afterF
  1269.         CALL FLASHs
  1270.         JP FLASHs
  1271.  
  1272. MU58    DEFW #402,#3A18
  1273.  
  1274. PPXOUT  ;курсор вне поля
  1275.         LD HL,(PPX)
  1276.         LD DE,(XMAX)
  1277.         INC D
  1278.         INC E
  1279.         LD A,H
  1280.         CP D
  1281.         JR NC,PPXBAD
  1282.         LD A,L
  1283.         CP E
  1284.         RET C
  1285. PPXBAD  POP HL
  1286.         POP BC
  1287. PPB     JP BEEP
  1288.  
  1289. G_NORM  JR NZ,G_BOOM
  1290.         CALL PPXOUT
  1291.         CALL DECGUN
  1292.         RET C
  1293.         CALL FIRE
  1294.         JR Z,G_NO1     
  1295.         CALL FLAMER
  1296.         LD A,(HER_N)
  1297.         PUSH AF
  1298.         LD A,(FIRTYP)
  1299.         PUSH AF
  1300.         CALL FX2TX
  1301.         CALL GSP60
  1302.         JR C,G_NO2
  1303.         SUB #60
  1304.         CALL NEWHER
  1305.         LD IX,(HER_AD)
  1306.         LD A,(IX+4)
  1307.         CP 3
  1308.         JR C,G_NO2
  1309.         CP 6
  1310.         JR NC,G_NO2
  1311.         CALL HERLIV
  1312.         CALL NZ,A_FIRE
  1313. G_NO2   POP AF
  1314.         LD (FIRTYP),A
  1315.         POP AF
  1316.         CALL NEWHER
  1317. G_NO1   JP afterF
  1318.  
  1319.  
  1320. G_BOOM  JR NZ,PPB
  1321.         CALL PPXOUT
  1322.         CALL DECGUN
  1323.         RET C
  1324.         CALL FIRE
  1325.         CALL NZ,BOOMER
  1326.         JP afterF
  1327.  
  1328. GRENAD  JR NZ,G_BOOM
  1329.         LD A,(CANF_B)
  1330.         CP #68
  1331.         JR NZ,PPB
  1332.         CALL PPXOUT
  1333.         CALL DECGUN
  1334.         RET C
  1335.         CALL FIRE_G
  1336.         CALL GR_SET
  1337.         JP afterF
  1338.  
  1339. SET_AD  ;адрес DIMSET->HL (NC-исчерпан)
  1340.         LD HL,SET_N
  1341.         LD A,(HL)
  1342.         CP SETLEN-1
  1343.         JR NC,STA
  1344.         INC (HL)
  1345. STA     LD C,A
  1346.         ADD A,A
  1347.         ADD A,A
  1348.         ADD A,C
  1349.         LD E,A
  1350.         LD D,0
  1351.         INC HL
  1352.         ADD HL,DE
  1353.         RET
  1354.  
  1355. GR_SET  ;зап поз гран
  1356.         CALL SET_AD
  1357.         LD DE,(FX2)
  1358.         LD (HL),E
  1359.         INC HL
  1360.         LD (HL),D
  1361.         INC HL
  1362.         LD A,(FLR)
  1363.         LD (HL),A
  1364.         INC HL
  1365.         LD (HL),0
  1366.         RET
  1367.  
  1368. GUN12   ;МС-контроль
  1369.         JR NZ,G_BOOM
  1370.         CALL PPXOUT
  1371.         CALL DECGUN
  1372.         RET C
  1373.         CALL FIRE
  1374.         JR Z,G120
  1375.         CALL FX2TX
  1376.         CALL GSP60
  1377.         RET C
  1378.         SUB #60
  1379.         CALL GET_IX
  1380.         CALL HERLIV
  1381.         RET Z
  1382.         CALL FLASH
  1383.         CALL FLASH
  1384.         CALL FLASH
  1385.         LD A,5
  1386.         CALL HER_BA
  1387.         CP (IX+5)
  1388.         JR Z,G120   ;свой своего
  1389.         LD (IX+5),A
  1390.         OR A
  1391.         LD A,(IX+4)
  1392.         JR NZ,G12A
  1393.         LD (IX+6),0
  1394.         LD C,#41 ;под наш
  1395.         ADD A,21
  1396.         CP 21
  1397.         JR NZ,G121
  1398.         LD A,(IX+8)
  1399.         INC C
  1400.         JR G121
  1401. G12A    LD C,#43 ;под их
  1402.         ADD A,21
  1403.         CP 21
  1404.         JR NZ,G121
  1405.         LD A,(IX+8)
  1406.         LD C,#40
  1407.         ;сообщение о взятии под контроль
  1408. G121    LD (MU60n),A
  1409.         LD IX,MU60x
  1410.         LD (IX+3),C
  1411.         CALL S_MENU
  1412. G120    JP afterF
  1413.  
  1414. MU60x   DEFW #402,#6018
  1415. MU60n   DEFB 55
  1416.  
  1417. FX      EQU LIN_XY ;коорд.пули x2
  1418. FY      EQU LIN_XY+1
  1419. FHIGH   DEFB 0;высота 31..0
  1420.  
  1421. PF_HL   DEFW 0,64,63,128
  1422. PF_REL  DEFW 0,1,#100,#101
  1423.  
  1424. BULL    EQU     DATR+512
  1425. F_PUT   XOR A ;вывод изобр. пули из BULL
  1426.         LD HL,(FX)
  1427.         SRL H
  1428.         JR NC,PF_1
  1429.         INC A
  1430.         INC A
  1431. PF_1    SRL L
  1432.         JR NC,PF2
  1433.         INC A
  1434. PF2     LD C,A
  1435.         LD (TX),HL
  1436.         CALL INFR
  1437.         RET NC
  1438.         CALL XYHL
  1439.         LD DE,DSCR+257
  1440.         ADD HL,DE
  1441.         EX DE,HL
  1442.         LD A,C
  1443.         LD HL,PF_HL
  1444.         CALL WT
  1445.         ADD HL,DE
  1446.         LD A,C
  1447.         PUSH AF
  1448.         AND 3
  1449.         LD A,0
  1450.         JP PE,PF3
  1451.         LD A,2
  1452. PF3     LD DE,BULL
  1453.         CALL HERO
  1454.         POP AF
  1455.         LD HL,PF_REL
  1456.         CALL WT
  1457.         LD DE,(TX)
  1458.         ADD HL,DE
  1459.         LD (TX),HL
  1460.         PUSH HL
  1461.         CALL GSP60
  1462.         CCF
  1463.         JR C,PF7
  1464.         LD HL,vSIZE
  1465.         CALL BA
  1466.         CP 21 ;высота видимости
  1467. PF7     POP HL
  1468.         CALL C,RELA
  1469.         INC H
  1470.         CALL RELA
  1471.         DEC H
  1472.         INC L
  1473.         JP RELA
  1474.  
  1475. F_IMG   ;созд. изобр. в BULL
  1476.         LD A,(G_TYPE)
  1477. F_IMG_  EX AF,AF
  1478.         Ms 4
  1479.         XOR A
  1480.         LD HL,BULL
  1481.         PUSH HL
  1482.         LD DE,BULL+1
  1483.         LD (HL),A
  1484.         LD BC,95
  1485.         LDIR
  1486.         LD H,A
  1487.         EX AF,AF
  1488.         CP 11
  1489.         JR C,FG1
  1490.         LD A,11
  1491. FG1     RLCA
  1492.         RLCA
  1493.         LD L,A
  1494.         ADD HL,HL
  1495.         ADD HL,HL
  1496.         ADD HL,HL
  1497.         LD DE,xBULL
  1498.         ADD HL,DE
  1499.         EX DE,HL
  1500.         LD A,(FHIGH)
  1501.         AND #F
  1502.         RLCA
  1503.         RLCA
  1504.         LD C,A
  1505.         POP HL
  1506.         ADD HL,BC
  1507.         EX DE,HL
  1508.         LD C,24
  1509.         LDIR
  1510.         PUSH HL
  1511.         CALL PT128
  1512.         CALL FX2TX
  1513.         CALL GSP
  1514.         POP HL
  1515.         CP 2
  1516.         JR C,FG0
  1517.         Ms 4
  1518.         LD BC,8
  1519.         LD DE,BULL+84
  1520.         LDIR
  1521. FG0     JP PT128
  1522.  
  1523. FIRini  CALL GET_DE
  1524.         LD A,(FLR)
  1525.         PUSH AF
  1526.         PUSH HL
  1527.         CP (HL)
  1528.         JR NZ,RI00
  1529.         LD (TX),DE
  1530.         CALL INFR
  1531.         JR C,RI0
  1532. RI00    CALL CENTR
  1533.         CALL ALLSPF
  1534. RI0     CALL GET_DE
  1535.         LD (FX2),DE
  1536.         SLA D
  1537.         SLA E
  1538.         LD (FX),DE
  1539.         LD HL,(PPX)
  1540.         LD A,(G_TYPE)
  1541.         CP 10
  1542.         CALL NZ,CORR_T;correct_target
  1543.         SLA H
  1544.         SLA L
  1545.         CALL LINini
  1546.         POP HL
  1547.         POP AF
  1548.         LD C,23
  1549.         OR A
  1550.         JR NZ,RI1
  1551.         LD C,7
  1552. RI1     ;correct_high
  1553.         CALL RND
  1554.         AND 3
  1555.         ADD A,C
  1556.         CALL HI_10
  1557.         LD C,A
  1558.         LD A,(HL)
  1559.         OR A
  1560.         LD A,23
  1561.         JR NZ,RI2
  1562.         LD A,7
  1563. RI2     LD (FHIGH),A
  1564.         SUB C
  1565.         LD C,1 ;up
  1566.         JR NC,RI3
  1567.         DEC C ;dwn
  1568.         NEG
  1569. RI3     LD L,A
  1570.         SRL A
  1571.         LD (DHIGH),A
  1572.         LD A,(LIN_LN)
  1573.         LD H,A
  1574.         LD (PHIGH),HL
  1575.         LD A,C
  1576.         LD (F_SH),A
  1577.         RET
  1578.  
  1579. HI_10   ;кон.выс. для гранаты
  1580.         PUSH AF
  1581.         LD A,(G_TYPE)
  1582.         CP 10
  1583.         JR Z,HIy10
  1584.         POP AF
  1585.         RET
  1586. HIy10   POP AF
  1587.         OR #F
  1588.         INC A
  1589.         RET
  1590.  
  1591. gPARAB  DEFB 0,-1,-1,-1,-1,-1,-1,-1,-0,-1,-0,-1,-0,-0,-1,-0
  1592.         DEFB 0,0,1,0,0,1,0,1,0,1,1,1,1,1,1,1,2
  1593.  
  1594. G_STP   DEFB 0 ;фаза полета
  1595. G_sTMP  DEFB 0 ;-""- текущ
  1596.  
  1597. G_CORR  ;коррекц.выс для гран
  1598.         LD HL,G_STP
  1599.         INC (HL)
  1600.         LD L,(HL)
  1601.         LD H,0
  1602.         ADD HL,HL
  1603.         ADD HL,HL
  1604.         ADD HL,HL
  1605.         ADD HL,HL
  1606.         ADD HL,HL ;x32
  1607.         EX DE,HL
  1608.         LD HL,(LIN_LN)
  1609.         CALL DIVB2
  1610.         LD A,E
  1611.         CP 32
  1612.         JR NC,GC01
  1613.         LD A,(FHIGH)
  1614.         EX AF,AF
  1615.         LD A,(G_sTMP)
  1616.         PUSH AF
  1617.         LD HL,gPARAB
  1618.         CALL BA
  1619.         POP AF
  1620. GC0     CP E
  1621.         JR NC,GC2
  1622.         EX AF,AF
  1623.         ADD A,(HL)
  1624.         INC HL
  1625.         EX AF,AF
  1626.         INC A
  1627.         JR GC0
  1628. GC2     LD (G_sTMP),A
  1629.         EX AF,AF
  1630.         LD (FHIGH),A
  1631.         RET
  1632. GC01    XOR A
  1633.         LD (F_SH),A
  1634.         LD A,32
  1635.         LD (FHIGH),A
  1636.         RET
  1637.  
  1638. FIRE_G   ;полет гранаты;вых:Z/NZ-вылет/попал
  1639.         LD HL,0
  1640.         LD (G_STP),HL
  1641.         CALL HERROT
  1642.         CALL FIRini
  1643. FireG1  CALL F_IMG
  1644.         CALL F_PUT
  1645.         CALL OUTDSC
  1646.         CALL PBU
  1647.         CALL G_CORR
  1648.         CALL FIRnxt
  1649.         CP 1
  1650.         JR C,FireG1
  1651. FireG2  LD A,31
  1652.         LD (FHIGH),A
  1653.         LD A,5
  1654.         CALL F_IMG_
  1655.         CALL F_PUT
  1656.         CALL OUTDSC
  1657.         JP PBU
  1658.  
  1659. FIRE_S  ;звуки выстрела
  1660.         DEFB 6,0,0,4,9,7,7,5,2,2,02,8,2,8,02,02,8
  1661.  
  1662. FSOUND  LD A,(G_TYPE)
  1663.         LD HL,FIRE_S
  1664.         CALL BA
  1665.         JP SOUNDn
  1666.  
  1667. FIRE    ;вых:Z/NZ-вылет/попал
  1668.         CALL HERROT
  1669.         CALL FIRini
  1670.         CALL FSOUND
  1671. Fire1   CALL F_IMG
  1672.         CALL F_PUT
  1673.         CALL OUTDSC
  1674.         CALL PBU
  1675.         CALL FIRnxt
  1676.         CP 1
  1677.         JR C,Fire1
  1678.         RET NC
  1679.  
  1680. B_Fr    DEFB 1
  1681. B_He    DEFB 1
  1682. B_FWn   DEFB 1
  1683. B_Pwr   DEFB 1
  1684.  
  1685. EXPL    ;разрушения от взрыва
  1686.         CALL G_HeFr
  1687.         LD (B_FWn),A
  1688.         LD (B_Fr),DE
  1689.         LD A,7
  1690.         CALL GUN_BT
  1691.         LD (B_Pwr),A
  1692.         LD HL,DSCR
  1693.         PUSH HL
  1694.         LD DE,DSCR+2
  1695.         LD (HL),1
  1696.         INC HL
  1697.         LD (HL),0
  1698.         LD BC,200
  1699.         LDIR
  1700.         LD A,(G_TYPE)
  1701.         LD HL,BOFL_T
  1702.         CALL BA
  1703.         POP HL
  1704.         LD B,A
  1705.         ;LD C,0
  1706. BEX1    PUSH BC
  1707.         PUSH HL
  1708.         LD A,C
  1709.         LD HL,cBOOM
  1710.         CALL WT
  1711.         PUSH HL
  1712.         LD A,L
  1713.         LD HL,DSCR
  1714.         CALL BA
  1715.         POP HL
  1716.         OR A
  1717.         JP Z,BE_NO
  1718.         LD A,H
  1719.         AND #F0
  1720.         SRA A
  1721.         SRA A
  1722.         SRA A
  1723.         SRA A
  1724.         LD D,A
  1725.         LD A,H
  1726.         AND #F
  1727.         CP 8
  1728.         JR C,BEX3
  1729.         OR #F0
  1730. BEX3    LD HL,(FXOLD)
  1731.         ADD A,L
  1732.         LD L,A
  1733.         LD A,D
  1734.         ADD A,H
  1735.         LD H,A
  1736.         LD (TX),HL ;шаг взр
  1737.         LD A,7
  1738.         CALL GUN_BT
  1739.         PUSH AF
  1740.         CALL GSP60
  1741.         JR NC,BE_1
  1742.         CALL ATSP
  1743.         LD B,A
  1744.         AND %11
  1745.         LD C,A
  1746.         INC C
  1747.         POP AF
  1748.         CP C
  1749.         JR C,BE_YES
  1750.         LD A,C ;для Pwr=2
  1751.         CP 3
  1752.         JR NZ,BE_5
  1753.         CALL RND
  1754.         AND 3
  1755.         JR NZ,BE_YES
  1756. BE_5    LD A,B
  1757.         AND %11100
  1758.         CP %11100
  1759.         JP Z,BATREE
  1760.         CP %10100
  1761.         PUSH AF
  1762.         CALL Z,GROUP
  1763.         POP AF
  1764.         CALL NZ,CONV_
  1765.         JR BE_YES
  1766. BE_1    ;в героя
  1767.         SUB #60
  1768.         CALL GET_IX
  1769.         CALL HERLIV
  1770.         JR NZ,BE_2
  1771.         POP AF
  1772.         OR A
  1773.         JR Z,BE_YES
  1774.         LD (IX+8),0
  1775.         CALL GSP
  1776.         AND #80
  1777.         OR (IX+7)
  1778.         CALL PSP
  1779.         JR BE_YES
  1780. BE_2    POP AF
  1781.         CALL G_HeFr
  1782.         CALL DECHER
  1783. BE_YES  CALL ATSPM
  1784.         AND #40
  1785.         JR Z,BE_NO
  1786.         LD A,1
  1787.         JR BEX2
  1788. BE_NO   XOR A
  1789. BEX2    POP HL
  1790.         LD (HL),A
  1791.         INC HL
  1792.         PUSH HL
  1793.         LD HL,B_Fr ;уменьш воздей взр
  1794.         LD A,(HL)
  1795.         OR A
  1796.         JR Z,BEX4
  1797.         DEC (HL)
  1798. BEX4    INC HL
  1799.         LD A,(HL)
  1800.         OR A
  1801.         JR Z,BEX5
  1802.         DEC (HL)
  1803. BEX5    POP HL
  1804.         POP BC
  1805.         INC C
  1806.         LD A,C
  1807.         DEC A
  1808.         CP B
  1809.         JP C,BEX1
  1810.         RET
  1811.  
  1812. GROUP   ;групповой спр.
  1813.         LD HL,(TX)
  1814.         PUSH HL
  1815.         LD      IY,TX
  1816. EX3     DEC     (IY+1)
  1817.         CALL    ATSPG
  1818.         JR      Z,EX2
  1819.         INC     (IY+1)
  1820.         INC     (IY+1)
  1821.         CALL    ATSPG
  1822.         JR      Z,EX2
  1823.         DEC     (IY+1)
  1824.         INC     (IY)
  1825.         CALL    ATSPG
  1826.         JR      Z,EX2
  1827.         DEC     (IY)
  1828.         DEC     (IY)
  1829.         CALL    ATSPG
  1830.         JR      NZ,EXr
  1831. EX2     CALL    CONV_
  1832.         JR      EX3
  1833. EXr     POP HL
  1834.         LD (TX),HL
  1835.         RET
  1836. ATSPG   CALL ATSPM
  1837.         AND %11100
  1838.         CP %10100
  1839.         RET
  1840.  
  1841. BOFL_T  DEFB 0,36,120,56,0,1,1,20,3,3,56,1,2,2,0,36,3
  1842. bo_T    DEFB 0,-2,-2,2,0,-2,0,1
  1843. BTX     EQU G_STP ;коор.черепа
  1844. BOOME1  ;взрывающися предмет
  1845.         LD HL,(FX2)
  1846.         LD (FXOLD),HL
  1847.         LD HL,G_TYPE
  1848.         LD A,(HL)
  1849.         PUSH AF
  1850.         PUSH HL
  1851.         LD (HL),15
  1852.         CALL BOOMER
  1853.         POP HL
  1854.         POP AF
  1855.         LD (HL),A
  1856.         RET
  1857.  
  1858. BOOMER  ;взрыв
  1859.         LD A,1
  1860.         CALL SOUNDn
  1861.         LD HL,(FXOLD)
  1862.         CALL BOOMXY
  1863.         CALL OUTDSC
  1864.         CALL EXPL
  1865.         CALL ALLSPF
  1866.         JP OUTDSC
  1867.  
  1868.  
  1869. BOOMXY  ;черепа в [HL]
  1870.         LD C,4
  1871. bo0     PUSH HL
  1872.         LD A,C
  1873.         DEC A
  1874.         LD HL,bo_T
  1875.         CALL WT
  1876.         POP DE
  1877.         LD A,L
  1878.         ADD A,E
  1879.         LD L,A
  1880.         LD A,H
  1881.         ADD A,D
  1882.         LD H,A
  1883.         PUSH HL
  1884. LLL     LD (BTX),HL
  1885.         LD B,4
  1886.         LD DE,xBOOM
  1887. bo1     PUSH BC
  1888.         PUSH DE
  1889.         CALL bo_bo
  1890.         EX DE,HL
  1891.         LD BC,96
  1892.         ADD HL,BC
  1893.         EX DE,HL
  1894.         DEC H
  1895.         INC L
  1896.         CALL bo_bo
  1897.         LD HL,(BTX)
  1898.         INC H
  1899.         LD B,3
  1900. bo4     PUSH BC
  1901.         CALL RELA
  1902.         DEC H
  1903.         INC L
  1904.         POP BC
  1905.         DJNZ bo4
  1906.         CALL OUTDSC
  1907.         LD A,3
  1908.         CALL DELAY
  1909.         LD HL,(BTX)
  1910.         LD (TX),HL
  1911.         CALL PXYF
  1912.         CALL PBU
  1913. bo2     POP HL
  1914.         LD BC,192
  1915.         ADD HL,BC
  1916.         EX DE,HL
  1917.         POP BC
  1918.         POP HL
  1919.         PUSH HL
  1920.         DJNZ bo1
  1921.         POP HL
  1922.         DEC C
  1923.         JR NZ,bo0
  1924.         RET
  1925.  
  1926. bo_bo   PUSH HL
  1927.         PUSH DE
  1928.         LD (TX),HL
  1929.         CALL INFR
  1930.         JR NC,bo_1
  1931.         CALL XYHL
  1932.         LD BC,DSCR+257
  1933.         ADD HL,BC
  1934.         XOR A
  1935.         POP DE
  1936.         PUSH DE
  1937.         CALL HERO
  1938. bo_1    POP DE
  1939.         POP HL
  1940.         RET
  1941.  
  1942. CONV_   ;превращения спрайта (не героя)
  1943.         CALL GSP
  1944.         PUSH AF
  1945.         AND #7F
  1946.         LD H,xCONV/256
  1947.         OR #80
  1948.         LD L,A
  1949.         LD A,(HL)
  1950.         CP 255
  1951.         JR C,CV1
  1952.         POP AF ;не конв
  1953.         RET
  1954. CV1     POP AF
  1955.         AND #80
  1956.         OR (HL)
  1957.         EXX
  1958.         LD (HL),A
  1959.         EXX
  1960.         AND #7F
  1961.         LD L,A
  1962.         LD H,xATR/256
  1963.         LD A,(HL)
  1964.         AND %11100
  1965.         CP %00100 ;дверь?
  1966.         RET NZ
  1967.         JR Z,CONV_
  1968.  
  1969. FLAMER  ;простое попадание
  1970.         LD A,3
  1971.         CALL SOUNDn
  1972.         LD A,7
  1973.         CALL GUN_BT
  1974.         PUSH AF
  1975.         CALL GSP60
  1976.         JR NC,FLM1
  1977.         CALL ATSP
  1978.         LD B,A
  1979.         AND %11
  1980.         LD C,A
  1981.         INC C
  1982.         POP AF
  1983.         CP C
  1984.         JR C,FLASH
  1985.         LD A,C ;для Pwr=2
  1986.         CP 3
  1987.         JR NZ,FLM5
  1988.         CALL RND
  1989.         AND 3
  1990.         JR NZ,FLASH
  1991. FLM5    LD A,B
  1992.         AND %11100
  1993.         CP %10100
  1994.         JR C,FLM0
  1995.         CP %11100
  1996.         JP Z,BATREE
  1997.         JP BOOME1
  1998. FLM0    CALL FLASH
  1999.         CALL FX2TX
  2000.         CALL CONV_
  2001. FLM4    CALL PXYF
  2002.         JP OUTDSC
  2003. FLM1    ;в героя
  2004.         SUB #60
  2005.         CALL GET_IX
  2006.         CALL FLASH
  2007.         CALL FX2TX
  2008.         CALL HERLIV
  2009.         JR NZ,FLM2
  2010.         POP AF
  2011.         OR A
  2012.         RET Z
  2013.         LD (IX+8),0
  2014.         CALL GSP
  2015.         AND #80
  2016.         OR (IX+7)
  2017.         CALL PSP
  2018.         JR FLM4
  2019. FLM2    POP AF
  2020.         CALL G_HeFr
  2021.         CALL DECHER
  2022.         JR FLM4
  2023.  
  2024. FX2TX   LD HL,(FX2)
  2025.         LD (TX),HL
  2026.         RET
  2027.  
  2028. FLASHs  CALL FSOUND
  2029. FLASH   LD A,(G_TYPE) ;вспышка
  2030.         LD HL,BOFL_T
  2031.         CALL BT
  2032.         LD B,A
  2033.         ADD A,A
  2034.         ADD A,B
  2035.         CALL M96
  2036.         LD DE,xBUM
  2037.         ADD HL,DE
  2038.         EX DE,HL
  2039.         LD B,3
  2040. FLH1    PUSH BC
  2041.         PUSH DE
  2042.         CALL FX2TX
  2043.         CALL INFR
  2044.         CALL XYHL
  2045.         LD BC,DSCR+257
  2046.         ADD HL,BC
  2047.         XOR A
  2048.         POP DE
  2049.         PUSH DE
  2050.         CALL HERO
  2051.         LD HL,(FX2)
  2052.         INC L
  2053.         CALL RELA
  2054.         DEC L
  2055.         INC H
  2056.         CALL RELA
  2057.         CALL OUTDSC
  2058.         CALL PBU
  2059.         LD A,3
  2060.         CALL DELAY
  2061.         POP DE
  2062.         LD HL,96
  2063.         ADD HL,DE
  2064.         EX DE,HL
  2065.         POP BC
  2066.         DJNZ FLH1
  2067.         JP OUTDSC
  2068.  
  2069. F_SH    DEFB 0
  2070. FXOLD   DEFW 0 ;стар.FX
  2071. FX2     DEFW 0 ;FX/2,FY/2
  2072. PHIGH   DEFW 0
  2073. DHIGH   DEFB 0
  2074.  
  2075. FXY0    DEFB -13,8, -17,9, -15,-14, -18,-15 ;сдв.экр
  2076.         DEFB -7,2, -4,-3, -25,-2, -26,-4
  2077.  
  2078. FIRnxt  ;след. поз. пули ;0,1,2-далее,вылет,попал
  2079.         CALL FX2TX
  2080.         LD (FXOLD),HL
  2081.         LD DE,(PHIGH) ;высота
  2082.         LD HL,FHIGH
  2083.         LD A,(DHIGH)
  2084.         ADD A,E
  2085.         LD (DHIGH),A
  2086. Fn01    CP D
  2087.         LD A,(F_SH)
  2088.         JR C,Fn0
  2089.         DEC (HL)
  2090.         OR A
  2091.         JR NZ,Fn02
  2092.         INC (HL)
  2093.         INC (HL)
  2094. Fn02    LD A,(DHIGH)
  2095.         SUB D
  2096.         LD (DHIGH),A
  2097.         JR Fn01
  2098. Fn0     OR A
  2099.         JR NZ,Fn2
  2100.         LD A,(HL) ;dwn
  2101.         CP 32
  2102.         JR C,Fn3
  2103.         LD A,2
  2104.         RET
  2105. Fn3     CP 16
  2106.         JR C,Fn1
  2107.         LD A,(FLR)
  2108.         OR A
  2109.         JR NZ,Fn1
  2110.         PUSH DE
  2111.         CALL GSP
  2112.         AND #7F
  2113.         JR Z,Fn31
  2114.         POP DE
  2115. Fn30    LD A,2
  2116.         RET
  2117. Fn31    LD A,1
  2118.         CALL FLOOR
  2119.         CALL ALLSPF
  2120.         POP DE
  2121.         JR Fn1
  2122. Fn2     LD A,(HL) ;up
  2123.         CP 200
  2124.         JR C,Fn5
  2125. FnOUT   LD A,1
  2126.         RET
  2127. Fn5     CP 16
  2128.         JR NC,Fn1
  2129.         LD A,(FLR)
  2130.         OR A
  2131.         JR Z,Fn1
  2132.         PUSH DE
  2133.         XOR A
  2134.         CALL FLOOR
  2135.         CALL GSP
  2136.         AND #7F
  2137.         JR Z,Fn51
  2138.         POP DE
  2139.         LD A,1
  2140.         CALL FLOOR
  2141.         JR Fn30
  2142. Fn51    CALL ALLSPF
  2143.         POP DE
  2144. Fn1     CALL LINnxt ;коорд
  2145.         LD A,255
  2146.         CP E
  2147.         JR Z,FnOUT
  2148.         CP D
  2149.         JR Z,FnOUT
  2150.         SRL E
  2151.         SRL D
  2152.         LD (FX2),DE
  2153.         LD A,(XMAX)
  2154.         CP E
  2155.         JR C,FnOUT
  2156.         LD A,(YMAX)
  2157.         CP D
  2158.         JR C,FnOUT
  2159.         LD (TX),DE
  2160.         PUSH DE
  2161.         CALL INFR
  2162.         JR C,FnOK
  2163.         LD A,(INDC)
  2164.         LD C,0
  2165.         CP #14
  2166.         JR Z,Fs1
  2167.         INC C
  2168.         CP #15
  2169.         JR Z,Fs1
  2170.         INC C
  2171.         CP #1C
  2172.         JR Z,Fs1
  2173.         INC C
  2174. Fs1     RLC C
  2175.         LD A,(DENC)
  2176.         AND 1
  2177.         ADD A,C
  2178.         LD HL,FXY0
  2179.         CALL WT
  2180.         LD DE,(FXOLD)
  2181.         LD A,L
  2182.         ADD A,E
  2183.         LD L,A
  2184.         LD A,H
  2185.         ADD A,D
  2186.         LD H,A
  2187.         LD (X0),HL
  2188.         CALL ALLSPF
  2189. FnOK    POP HL
  2190.         LD (TX),HL
  2191.         CALL GSP
  2192.         AND #7F
  2193.         OR A
  2194.         RET Z
  2195.         CP #60
  2196.         JR NC,Fn6
  2197.         CALL ATSP
  2198.         LD C,A
  2199.         LD A,2
  2200.         BIT 6,C ;?break
  2201.         RET Z
  2202.         XOR A
  2203.         BIT 5,C ;&?move
  2204.         RET NZ
  2205.         LD A,(FHIGH)
  2206.         AND #F
  2207.         CP 11
  2208.         LD A,2
  2209.         RET NC
  2210.         XOR A
  2211.         RET
  2212. Fn6     LD HL,(FX)
  2213.         LD A,L
  2214.         OR H
  2215.         CPL
  2216.         AND 1
  2217.         RLCA
  2218.         RET
  2219.  
  2220. HERROT  LD IX,(HER_AD) ;поворот к цели
  2221.         CALL GET_XY
  2222.         CALL DIRF
  2223.         LD D,(IX+3)
  2224.         SUB D
  2225.         RET Z
  2226.         AND 7
  2227.         CP 4
  2228.         LD A,D
  2229.         JR NC,HRR1
  2230.         INC A
  2231.         INC A
  2232. HRR1    DEC A
  2233.         AND 7
  2234.         LD (IX+3),A
  2235.         LD A,(IX+5)
  2236.         OR A
  2237.         LD A,(FLR)
  2238.         PUSH AF
  2239.         CALL Z,LOOKS
  2240.         POP AF
  2241.         CALL FLOOR
  2242.         CALL ALLSPF
  2243.         CALL OUTDSC
  2244.         JR HERROT
  2245.  
  2246. CANF_B  DEFB 1; можно стр.==#68
  2247. CANFIR  ;возможность стрельбы
  2248.         LD HL,0
  2249.         LD (G_STP),HL
  2250.         LD A,(FLR)
  2251.         PUSH AF
  2252.         LD HL,(PPX)
  2253.         LD (TX),HL
  2254.         LD DE,(XMAX)
  2255.         INC D
  2256.         INC E
  2257.         LD A,H
  2258.         CP D
  2259.         JR NC,NO_CAN
  2260.         LD A,L
  2261.         CP E
  2262.         JR NC,NO_CAN
  2263.         LD A,(G_TYPE)
  2264.         CP 10
  2265.         JR NZ,Can1
  2266.         CALL GSP60 ;для гр
  2267.         OR A
  2268.         JR Z,NO_GRE
  2269.         CALL CANini
  2270.         LD A,(LIN_LN)
  2271.         CP 32
  2272.         JR C,Can10
  2273. NO_GRE  LD A,#48
  2274.         JR Can2
  2275. Can1    CALL CANini
  2276. Can10   LD HL,(FX2)
  2277.         LD DE,(PPX)
  2278.         OR A
  2279.         SBC HL,DE
  2280.         JR NZ,Can3
  2281.         POP BC
  2282.         PUSH BC
  2283.         LD A,(FLR)
  2284.         CP B
  2285.         JR Z,YESCAN
  2286. Can3    LD A,(G_TYPE)
  2287.         CP 10
  2288.         CALL Z,G_CORR
  2289.         CALL CANnxt
  2290.         CP 1
  2291.         JR C,Can10
  2292.         JR NZ,NO_CAN
  2293. YESCAN  LD A,#68
  2294. Can2    LD (CANF_B),A
  2295.         POP AF
  2296.         JP FLOOR
  2297.  
  2298. CANF_V  LD HL,(CANF_B) ;индикация in line of fire
  2299.         LD H,L
  2300.         CALL MEM7
  2301.         LD (ATR+557),HL
  2302.         JP PT128
  2303.  
  2304. NO_CAN  LD A,#50
  2305.         JR Can2
  2306.  
  2307. CANini  CALL GET_DE
  2308.         LD A,(FLR)
  2309.         PUSH AF
  2310.         PUSH HL
  2311.         LD A,(HL)
  2312.         LD (OLDFLR),A
  2313.         CALL FLOOR
  2314.         LD (FX2),DE
  2315.         SLA D
  2316.         SLA E
  2317.         LD (FX),DE
  2318.         LD HL,(PPX)
  2319.         SLA H
  2320.         SLA L
  2321.         CALL LINini
  2322.         POP HL
  2323.         POP AF
  2324.         OR A
  2325.         LD A,23
  2326.         JR NZ,CI1
  2327.         LD A,7
  2328. CI1     CALL HI_10
  2329.         LD C,A
  2330.         LD A,(HL)
  2331.         OR A
  2332.         LD A,23
  2333.         JR NZ,CI2
  2334.         LD A,7
  2335. CI2     LD (FHIGH),A
  2336.         SUB C
  2337.         LD C,1 ;up
  2338.         JR NC,CI3
  2339.         DEC C ;dwn
  2340.         NEG
  2341. CI3     LD L,A
  2342.         SRL A
  2343.         LD (DHIGH),A
  2344.         LD A,(LIN_LN)
  2345.         LD H,A
  2346.         LD (PHIGH),HL
  2347.         LD A,C
  2348.         LD (F_SH),A
  2349.         RET
  2350.  
  2351. CANnxt  ;след. поз. пули ;0,1,2-далее,вылет,попал
  2352.         CALL FX2TX
  2353.         LD (FXOLD),HL
  2354.         LD DE,(PHIGH) ;высота
  2355.         LD HL,FHIGH
  2356.         LD A,(DHIGH)
  2357.         ADD A,E
  2358.         LD (DHIGH),A
  2359. Cn01    CP D
  2360.         LD A,(F_SH)
  2361.         JR C,Cn0
  2362.         DEC (HL)
  2363.         OR A
  2364.         JR NZ,Cn02
  2365.         INC (HL)
  2366.         INC (HL)
  2367. Cn02    LD A,(DHIGH)
  2368.         SUB D
  2369.         LD (DHIGH),A
  2370.         JR Cn01
  2371. Cn0     OR A
  2372.         JR NZ,Cn2
  2373.         LD A,(HL)  ;dwn
  2374.         CP 32
  2375.         JR C,Cn3
  2376.         LD A,2
  2377.         RET
  2378. Cn3     CP 16
  2379.         JR C,Cn1
  2380.         LD A,(FLR)
  2381.         OR A
  2382.         JR NZ,Cn1
  2383.         PUSH DE
  2384.         CALL GSP
  2385.         AND #7F
  2386.         JR Z,Cn31
  2387.         POP DE
  2388. Cn30    LD A,2
  2389.         RET
  2390. Cn31    LD A,1
  2391.         CALL FLOOR
  2392.         POP DE
  2393.         JR Cn1
  2394. Cn2     LD A,(HL) ;Up
  2395.         CP 200
  2396.         JR C,Cn5
  2397. CnOUT   LD A,1
  2398.         RET
  2399. Cn5     CP 16
  2400.         JR NC,Cn1
  2401.         LD A,(FLR)
  2402.         OR A
  2403.         JR Z,Cn1
  2404.         PUSH DE
  2405.         XOR A
  2406.         CALL FLOOR
  2407.         CALL GSP
  2408.         AND #7F
  2409.         JR Z,Cn51
  2410.         POP DE
  2411.         LD A,1
  2412.         CALL FLOOR
  2413.         JR Cn30
  2414. Cn51    POP DE
  2415. Cn1     CALL LINnxt ;коорд
  2416.         LD A,255
  2417.         CP E
  2418.         JR Z,CnOUT
  2419.         CP D
  2420.         JR Z,CnOUT
  2421.         SRL E
  2422.         SRL D
  2423.         LD (FX2),DE
  2424.         LD A,(XMAX)
  2425.         CP E
  2426.         JR C,CnOUT
  2427.         LD A,(YMAX)
  2428.         CP D
  2429.         JR C,CnOUT
  2430.         LD (TX),DE
  2431.         CALL GSP
  2432.         AND #7F
  2433.         OR A
  2434.         RET Z
  2435.         CP #60
  2436.         JR NC,Cn6
  2437.         CALL ATSP
  2438.         LD C,A
  2439.         LD A,2
  2440.         BIT 6,C ;?break
  2441.         RET Z
  2442.         XOR A
  2443.         BIT 5,C ;&?move
  2444.         RET NZ
  2445.         LD A,(FHIGH)
  2446.         AND #F
  2447.         CP 11
  2448.         LD A,2
  2449.         RET NC
  2450. Cn6     XOR A
  2451.         RET
  2452.  
  2453. CORR_T  ;случайн.разброс
  2454.         PUSH DE
  2455.         LD DE,(FX2)
  2456.         CALL RASST
  2457.         CP 2
  2458.         JR C,CRTE
  2459.         LD E,2
  2460.         CP 9
  2461.         JR C,CRT2
  2462.         INC E
  2463.         CP 19
  2464.         JR C,CRT2
  2465.         INC E
  2466.         CP 31
  2467.         JR C,CRT2
  2468.         INC E
  2469.         CP 43
  2470.         JR C,CRT2
  2471.         INC E
  2472. CRT2    ADD A,100
  2473.         LD (CRTprc+1),A ;100%+поправка на расст
  2474.         LD A,E
  2475.         LD (CORR_N+1),A
  2476.         PUSH HL
  2477.         LD A,(HER_AD) ;увеличение случ
  2478.         CPL
  2479.         CALL BA
  2480.         LD HL,RNB
  2481.         XOR (HL)
  2482.         LD (HL),A
  2483.         LD A,16
  2484.         CALL HER_BA
  2485.         LD E,A
  2486.         LD A,(FIRTYP)
  2487.         ADD A,2
  2488.         CALL GUN_BT
  2489.         LD L,A
  2490.         CALL MULB
  2491.         LD L,100
  2492.         CALL DIVB2
  2493. CRT1    CALL RND
  2494. CRTprc  CP 100
  2495.         JR NC,CRT1
  2496.         CP E
  2497.         JR NC,CRTM
  2498.         POP HL
  2499. CRTE    POP DE
  2500.         RET
  2501. CRTM    POP HL
  2502.         PUSH HL
  2503.         CALL CRTRN
  2504.         ADD A,L
  2505.         LD L,A
  2506.         CALL CRTRN
  2507.         ADD A,H
  2508.         LD H,A
  2509.         LD DE,(XMAX)
  2510.         LD A,L
  2511.         CP E
  2512.         JR NC,CRTM
  2513.         LD A,H
  2514.         CP D
  2515.         JR NC,CRTM
  2516.         POP DE
  2517.         POP DE
  2518.         RET
  2519.  
  2520. CRTRN   CALL RND
  2521.         LD E,A
  2522.         AND 7
  2523. CORR_N  CP 5
  2524.         JR NC,CRTRN
  2525.         BIT 6,E
  2526.         RET Z
  2527.         NEG
  2528.         RET
  2529.  
  2530. VZLOM   ;[] - убить всех (если ГАРПУНОВ И ТОРПЕДНИЦ по 31)
  2531.         LD HL,S_GUN
  2532.         LD A,(HL)
  2533.         INC HL
  2534.         INC HL
  2535.         CP (HL)
  2536.         RET NZ
  2537.         CP 31
  2538.         RET NZ
  2539.         LD IX,MAN
  2540.         LD DE,32
  2541.         LD B,32
  2542. VZL1    LD A,(IX+5)
  2543.         OR A
  2544.         JR Z,VZL2
  2545.         CALL RND
  2546.         AND 3
  2547.         JR Z,VZL3
  2548.         ;убить
  2549.         LD (IX+13),0
  2550.         JR VZL2
  2551. VZL3    ;парализ
  2552.         LD (IX+26),222
  2553. VZL2    ADD IX,DE
  2554.         DJNZ VZL1
  2555.         RET            
  2556. RASSTA  CALL GET_DE
  2557.         CALL GET_XY
  2558. RASST   ;расст от НL к DE: A:=max(|E-L|,|D-H|)
  2559.         PUSH HL
  2560.         PUSH DE
  2561.         LD A,L
  2562.         SUB E
  2563.         JR NC,RSA1
  2564.         NEG
  2565. RSA1    LD L,A
  2566.         LD A,D
  2567.         SUB H
  2568.         JR NC,RSA2
  2569.         NEG
  2570. RSA2    CP L
  2571.         JR NC,RSA3
  2572.         LD A,L
  2573. RSA3    POP DE
  2574.         POP HL
  2575.         RET