?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. ;---ОБРАБОТКА НАЖАТИЯ FIRE
  2.  
  3. ACTION  ;реакция на управл ***********
  4.         CALL FIRBUT
  5.         CALL capSEL
  6.         CALL SELECT
  7.         LD A,(T_FIRE)
  8.         DEC A
  9.         RET NZ
  10. ACT_F   LD A,(BX)
  11.         CP 24
  12.         RET NC
  13.         LD A,(SEL_T)
  14.         OR A
  15.         RET Z
  16.         CP 7
  17.         RET Z
  18.         JP NC,acHOM
  19.         LD A,(fixTAR) ;цель зафиксирована?
  20.         OR A
  21.         JR Z,acNfx
  22.         LD HL,G_MAP1
  23.         LD A,(TIC)
  24.         RRA
  25.         JR C,acFx
  26.         LD HL,G_FIX1
  27. acFx    LD (G_IMG),HL
  28.         RET
  29. acNfx   LD HL,G_MAP1 ;сменить курсор
  30.         LD (G_IMG),HL
  31.         LD A,(ext_M)
  32.         CP 1
  33.         LD A,(F_FUNC)
  34.         JP NC,acPEON
  35.         ;для людей/группы
  36.         CP #FF
  37.         RET NC
  38.         OR A
  39.         JR NZ,acM1
  40.         ;кнопка 0-я
  41. acMOV   LD C,2; move
  42. act00   CALL PXcorr
  43.         EX DE,HL
  44. act0    LD HL,SEL_T
  45.         LD B,(HL)
  46.         INC HL
  47. act1    LD A,(HL)
  48.         INC HL
  49.         PUSH HL
  50.         CALL N_IX
  51.         LD (IX+10),E
  52.         LD (IX+11),D
  53.         LD (IX+9),C
  54.         LD (IX+8),#80
  55.         POP HL
  56.         DJNZ act1
  57.         RET
  58. acM1    LD HL,(PX) ;кнопка 1я
  59.         DEC A
  60.         JP NZ,acM2
  61.         ;кнопка 1-я
  62.         LD A,(BUT_N+1)
  63.         CP 18
  64.         JR Z,acM1_1
  65.         ;атака
  66.         CALL HLcorr
  67.         PUSH HL
  68.         CALL GMAP2
  69.         POP DE
  70.         LD A,(HL)
  71.         SUB #38
  72. act03   LD C,3 ;на позицию
  73.         JR C,act00
  74.         RES 4,H
  75.         BIT 7,(HL)
  76.         SET 4,H
  77.         JR NZ,act00 ;на тёмное поле ->вых
  78.         CP #48
  79.         JR NC,act12
  80.         SET 7,A ;атака на здание
  81.         JR act10
  82. act12   SUB #48 ;атака на человека
  83.         CP #30
  84.         JR C,act03 ;не атакуй своего
  85. act10   LD C,A
  86.         LD HL,SEL_T
  87.         LD B,(HL)
  88.         INC HL
  89. act11   LD A,(HL)
  90.         INC HL
  91.         CP C ;сам себя?
  92.         JR Z,act17
  93.         PUSH HL
  94.         CALL N_IX
  95.         LD (IX+10),E
  96.         LD (IX+11),D
  97.         LD (IX+12),C
  98.         LD (IX+9),4 ;атаковать цель
  99.         LD (IX+8),#80
  100.         POP HL
  101. act17   DJNZ act11
  102.         LD L,C
  103.         LD H,6 ;время мигания кв. цели
  104.         LD (sel_en),HL
  105.         LD A,H
  106.         LD (fixTAR),A ;цель зафиксрована
  107.         RET
  108.  
  109. acM1_1  ;идти в лес/шахту
  110.         CALL HLcorr
  111.         CALL GMAP
  112.         LD A,(HL)
  113.         AND #7F
  114.         CP 78
  115.         LD C,6
  116.         JR C,acM1_a
  117.         INC C ;7
  118. acM1_a  CALL act00
  119.         LD (IX+14),E
  120.         LD (IX+15),D
  121.         RET
  122.  
  123. acM2    DEC A
  124.         JR NZ,acM3
  125.         ;кнопка 2-я
  126.         LD A,(BUT_N+2)
  127.         CP 19
  128.         JP Z,acREM
  129. acM3    LD A,(BUT_N+3)
  130.         CP 71
  131.         JR NZ,acM3_
  132.         ;свободный выcтрел из катапульты
  133.         LD C,27
  134.         PUSH HL
  135.         CALL GMAP
  136.         POP DE
  137.         LD A,(HL)
  138.         OR A
  139.         RET Z ;нельзя целить на бордюр
  140.         AND #80
  141.         RET NZ ;нельзя целить в тёмное поле
  142.         JP act0
  143.         ;колдовство
  144. acM3_   LD A,(BUT_H)
  145.         CP 66
  146.         JR C,acM301
  147.         ;у кунгов
  148.         LD C,14
  149.         JP NZ,acMANA
  150.         LD A,(F_FUNC)
  151.         ADD A,17
  152.         LD C,A
  153.         CP 21
  154.         JP NZ,act00
  155.         JR act30
  156. acM301  ;у людей
  157.         CP 57
  158.         LD C,11
  159.         JP Z,acMANA
  160.         LD A,(F_FUNC)
  161.         ADD A,14
  162.         LD C,A
  163.         CP 17
  164.         JP Z,act00
  165.         JR act30
  166.         ;
  167. acMANA  ;пров mana
  168.         LD A,(SEL_N)
  169.         CALL N_IX
  170.         LD A,(IX+6)
  171.         CP MANA/2
  172.         JP NC,act00
  173.         JP C,pb07
  174.  
  175. act30   ;заклинание(С) на цель
  176.         LD A,(SEL_T+1)
  177.         LD B,A
  178.         CALL N_IX
  179.         LD HL,(PX)
  180.         CALL IXt_HL
  181.         CALL IX_98
  182.         CALL GMAP2
  183.         LD A,(HL)
  184.         SUB #80 ;не человек?
  185.         RET C
  186.         CP B ;сам себя?
  187.         RET Z;
  188.         LD (IX+12),A
  189.         LD (IX+9),C ;атаковать цель
  190.         LD (IX+8),#80
  191.         LD L,A
  192.         LD H,1 ;время мигания кв. цели
  193.         LD (sel_en),HL
  194.         RET
  195.  
  196. acREM   ;ремонт/стр-во (C=8)
  197.         CALL HLcorr
  198.         CALL GMAP2
  199.         LD A,(HL)
  200.         SUB #38
  201.         JP C,acMOV
  202.         CP 72
  203.         JP NC,acMOV
  204.         LD C,8
  205.         JP act00
  206.  
  207.  
  208. nMN_WD  ;дать сообщ, если нехв mn/wd
  209.         ADD A,44
  210.         JP dirTX
  211.  
  212. acHOM   LD A,(F_FUNC)
  213.         CP #FF
  214.         RET NC
  215.         CALL mayBLT
  216.         RET NZ
  217.         LD A,(F_FUNC)
  218.         CALL GETmw
  219.         CALL dMN_WD
  220.         JR C,nMN_WD
  221.         LD HL,(PX)
  222.         CALL GMAP
  223.         LD A,(F_FUNC)
  224.         OR A
  225.         JR NZ,acH1
  226.         ;дорожка
  227.         LD A,(MASTER)
  228.         ADD A,7
  229.         LD (HL),A
  230.         RET
  231.         ;
  232. acH1    ;заборчик
  233.         LD (HL),66
  234.         CALL putWAL
  235.         DEC L
  236.         CALL putWAL
  237.         INC L
  238.         INC L
  239.         CALL putWAL
  240.         LD DE,-65
  241.         ADD HL,DE
  242.         CALL putWAL
  243.         LD DE,128
  244.         ADD HL,DE
  245. putWAL  ;поставить стенку, учтя вокруг
  246.         LD A,(HL)
  247.         AND #7F
  248.         CP 64
  249.         RET C
  250.         CP 78
  251.         RET NC
  252.         CP 71
  253.         LD (HL),64
  254.         JR C,pUW1
  255.         LD (HL),71
  256. pUW1    LD C,0
  257.         PUSH HL
  258.         DEC L
  259.         CALL pUWsub
  260.         INC L
  261.         INC L
  262.         CALL pUWsub
  263.         LD DE,-65
  264.         ADD HL,DE
  265.         CALL pUWsub
  266.         LD DE,128
  267.         ADD HL,DE
  268.         CALL pUWsub
  269.         LD HL,pUWtab
  270.         LD A,C
  271.         CALL BA
  272.         LD C,A
  273.         POP HL
  274.         PUSH HL
  275.         ADD A,(HL)
  276.         LD (HL),A
  277.         SET 4,H
  278.         LD (HL),2
  279.         RES 4,H
  280.         LD E,64
  281.         ADD HL,DE
  282.         LD A,(HL)
  283.         AND #7F
  284.         CP 51
  285.         JR NZ,pUW3
  286.         LD A,C
  287.         CP 4
  288.         JR Z,pUW2
  289.         LD (HL),1
  290.         JR pUW2
  291. pUW3    CP 64
  292.         JR C,pUW5
  293.         CP 78
  294.         JR C,pUW2
  295. pUW5    LD A,C
  296.         CP 4
  297.         JR NZ,pUW2
  298.         ;SET 4,H
  299.         LD A,(HL)
  300.         OR A
  301.         JR Z,pUW11
  302.         CP 7
  303.         JR C,pUW4
  304.         CP 17
  305.         JR C,pUW11
  306.         CP 26
  307.         JR C,pUW4
  308. pUW11   POP HL
  309.         INC (HL)
  310.         RET
  311. pUW4    LD (HL),0
  312.         RES 4,H
  313.         LD (HL),51
  314. pUW2    POP HL
  315.         RET
  316. pUWtab  DEFB 2,4,4,4,2,0,5,0,2,3,6,3,2,1,2,1
  317. pUWsub  SLA C
  318.         LD A,(HL)
  319.         AND #7F
  320.         CP 64
  321.         RET C
  322.         CP 78
  323.         RET NC
  324.         INC C
  325.         RET
  326.  
  327.  
  328. acPEON  ;строительство для крестьян
  329.         JR NZ,acPex2
  330.         ;меню 1
  331.         CP #FF
  332.         RET NC
  333.         CALL mayBLT
  334.         RET NZ
  335.         LD A,(F_FUNC)
  336.         OR A
  337.         JR NZ,acP2
  338.         LD A,8
  339.         JR acP2
  340. acPex2  CP #FF
  341.         RET NC
  342.         CALL mayBLT
  343.         RET NZ
  344.         LD A,(F_FUNC)
  345.         ADD A,3
  346. acP2    LD C,A
  347.         PUSH BC
  348.         LD A,(F_FUNC)
  349.         CALL GETmw
  350.         CALL dMN_WD
  351.         POP BC
  352.         JP C,nMN_WD
  353.         LD A,(MASTER)
  354.         OR A
  355.         JR Z,acP3
  356.         LD A,10
  357. acP3    ADD A,C
  358.         LD C,A
  359.         LD HL,(PX)
  360.         INC L
  361.         INC H
  362.         PUSH HL
  363.         XOR A
  364.         CALL BLTNEW
  365.         CALL onsee2
  366.         POP DE
  367.         LD C,8
  368.         CALL act0
  369.         EX DE,HL
  370.         CALL EVENTr
  371.         CALL oneSE_
  372.         RET ;!
  373.  
  374. PXcorr  ;коррекция PX,если указывает на край здания (вых: HL)
  375.         LD HL,(PX)
  376. HLcorr  ;то же для HL
  377.         PUSH HL
  378.         CALL GMAP
  379.         LD A,(HL)
  380.         AND #7F
  381.         SUB 120
  382.         POP HL
  383.         RET C
  384.         PUSH HL
  385.         LD HL,PXcrT
  386.         CALL WT
  387.         POP DE
  388.         LD A,L
  389.         ADD A,E
  390.         LD L,A
  391.         LD A,H
  392.         ADD A,D
  393.         LD H,A
  394.         RET
  395.  
  396. PXcrT   DEFB 1,0, 1,1, 0,1, -1,1, -1,0
  397.         DEFB -1,-1, 0,-1, 1,-1