?login_element?

Subversion Repositories NedoOS

Rev

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

  1.         ;MAIN "VERA",8
  2. ;Ведение игры по сценарию и т.п.
  3. ;Обозначение выполнения квестов
  4. RUN_Q
  5.         LD HL,QUEST
  6.         LD E,A
  7.         LD D,0
  8.         ADD HL,DE
  9.         INC (HL)
  10.         RET
  11.  
  12. ;Восстанавливаем номер диалога, который был до отдачи вещи
  13. SC0     LD HL,(PREV+1)
  14.         LD A,(PREV)
  15.         LD (HL),A
  16.         RET
  17.  
  18. ;прочит. письмо
  19. SC1     XOR A
  20.         CALL RUN_Q
  21.         RET
  22.  
  23. ;отдаем волку бутерброд
  24. SC2     XOR A
  25.         LD (INVT2+4),A
  26.         LD (MASSIVE+3602),A
  27.         LD (MASSIVE+3666),A
  28.         INC A
  29.         CALL RUN_Q
  30.         LD HL,#001F    ;аним. группа исчезновения
  31.         LD (MAP+#1C24),HL
  32.         LD (MAP+#1CA4),HL
  33.         LD HL,SPR
  34.         LD (UNDR),HL
  35.         XOR A
  36.         LD (INVT2+4),A
  37.         JR SC4B
  38.  
  39. ;летим на метле через болото
  40. SC3     LD A,(QUEST+2)
  41.         XOR 1
  42.         LD (QUEST+2),A
  43.         LD HL,#3315
  44.         JR NZ,SC3_
  45.         LD HL,#3B1D
  46. SC3_    LD (HEROCRD),HL
  47.         JP CENTR2
  48.  
  49. ;Аленушка дает пустой флакон
  50. SC4     LD A,3
  51.         CALL RUN_Q
  52.         LD A,10
  53.         LD B,15
  54. SC4_    LD (ALE),A
  55.         LD A,B
  56. SC4B    LD (KARMBK+1),A
  57.         RET
  58.  
  59. ;Наполняем флакон водой
  60. SC5     LD A,4
  61.         CALL RUN_Q
  62.         LD HL,0
  63.         LD (FORTAB2),HL ;чтобы больше не наполняли
  64.         LD A,11
  65.         JR SC4B
  66.  
  67. ;лечим козленка
  68. SC6     LD A,5
  69.         CALL RUN_Q
  70.         XOR A
  71.         LD (INVT2+4),A
  72.         LD (INVT3+4),A
  73.         LD HL,#001F    ;аним. группа исчезновения
  74.         LD (MAP+5948),HL
  75.         LD L,#21
  76.         LD (MAP+6076),HL
  77.         LD HL,SPR+(233*32)
  78.         LD (UNDR),HL
  79.         LD HL,SPR+(234*32)
  80.         LD (UNDR2),HL
  81.         LD A,4
  82.         JR SC4_-2
  83.  
  84. ;Алена дает деньги
  85. SC7     LD A,6
  86.         CALL RUN_Q
  87.         LD A,5
  88.         LD B,16+7
  89.         JR SC4_
  90.  
  91. ;Хевор дает ведро
  92. SC8     LD A,8
  93.         CALL RUN_Q
  94.         LD A,6
  95.         LD (HEV),A
  96.         LD A,3
  97.         LD (BUK),A
  98.         LD A,12
  99.         JR SC4B
  100.  
  101. ;Наполняем ведро водой
  102. SC9     LD A,9
  103.         CALL RUN_Q
  104.         LD HL,V38
  105.         LD DE,v38
  106.         LD BC,0
  107. SC9_    LD (V+10),HL
  108.         LD (VSVOY+10),DE
  109.         LD (VED),BC
  110.         RET
  111.  
  112. ;Оживляем статую
  113. SC10    LD A,10
  114.         CALL RUN_Q
  115.         LD A,7
  116.         LD (HEV),A
  117.         LD A,3
  118.         LD (PBOY+3),A
  119.         LD HL,V5
  120.         LD DE,v5
  121.         LD BC,#050C
  122.         JR SC9_
  123.  
  124. ;Наполнено ли ведро водой
  125. SC11    LD A,(PBOY+3)
  126.         AND A
  127.         JR NZ,SC11_
  128.         LD HL,(V+10)
  129.         LD DE,V38
  130.         SBC HL,DE
  131.         RET Z
  132. SC11_   POP HL
  133.         POP DE
  134.         POP AF
  135.         XOR A
  136.         PUSH AF
  137.         PUSH DE
  138.         PUSH HL
  139.         RET
  140.  
  141. ;Хевор дает магнит
  142. SC12    LD A,11
  143.         CALL RUN_Q
  144.         LD A,2
  145.         LD (ZAD),A
  146.         LD A,8
  147.         LD (HEV),A
  148.         LD A,9
  149.         JP SC4B
  150.  
  151. ;Режем пшеницу и тупим серп
  152. SC13    LD A,17
  153.         CALL RUN_Q
  154.         LD HL,(SPRCURS+1)
  155.         LD (v3+4),HL
  156.         LD DE,SPR+((150+3)*32)
  157.         LD HL,0   ;лезвие не режет пшеницу
  158.         LD (FLZ),HL
  159. SC13_   LD A,10
  160.         LD (FSR+2),A ;затупили
  161.         LD (FSR+6),A
  162.         LD HL,(ADRSPRT)
  163.         LD (HL),E
  164.         INC HL
  165.         LD (HL),D
  166.         RET
  167.  
  168. ;Режем хмель и тупим серп
  169. SC14    LD A,18
  170.         CALL RUN_Q
  171.         LD HL,0   ;лезвие не режет хмель
  172.         LD (FLZ+4),HL
  173.         LD HL,(SPRCURS+1)
  174.         LD (v21+4),HL
  175.         LD DE,SPR+((150+21)*32)
  176.         JR SC13_
  177.  
  178. ;Хевор дает серп
  179. SC15    LD A,16
  180.         CALL RUN_Q
  181.         LD A,8
  182.         LD (HEV),A
  183.  
  184.         LD DE,LEZV
  185.         CALL INSERT-3
  186.  
  187.         LD A,22+7
  188. SC15_   JP SC4B
  189.  
  190. ;появление лезвия
  191. LEZV    LD DE,v32+4
  192.         LD HL,SPR+((150+32)*32)
  193.         JP FADE
  194.  
  195. ;Алена дает ягоды
  196. SC16    LD A,31
  197.         CALL RUN_Q
  198.         LD A,5
  199.         LD (ALE),A
  200.         LD A,7+29
  201.         JR SC15_
  202.  
  203. ;Режем пшеницу и тупим лезвие
  204. SC17    LD A,17
  205.         CALL RUN_Q
  206.         LD HL,(SPRCURS+1)
  207.         LD (v3+4),HL
  208.         LD DE,SPR+((150+3)*32)
  209.         LD HL,0 ;серп не режет пшеницу
  210.         LD (FSR),HL
  211. SC17_   LD A,14
  212.         LD (FLZ+2),A ;затупили
  213.         LD (FLZ+6),A
  214.         LD HL,(ADRSPRT)
  215.         LD (HL),E
  216.         INC HL
  217.         LD (HL),D
  218.         RET
  219.  
  220. ;Режем хмель и тупим лезвие
  221. SC18    LD A,18
  222.         CALL RUN_Q
  223.         LD HL,0 ;серп не режет хмель
  224.         LD (FSR+4),HL
  225.         LD HL,(SPRCURS+1)
  226.         LD (v21+4),HL
  227.         LD DE,SPR+((150+21)*32)
  228.         JR SC17_
  229.  
  230. ;Прочитано ли письмо Верой?
  231. SC19    LD A,(QUEST)
  232.         AND A
  233.         JP Z,SC11_
  234.         LD A,7
  235.         JP RUN_Q
  236.  
  237. ;Мед во флакон
  238. SC20    LD A,19
  239.         CALL RUN_Q
  240.         LD HL,0
  241.         LD (ULEY),HL
  242.         LD A,7+20
  243.         JP SC4B
  244.  
  245. ;Проверка поговорили ли с Хевором
  246. SC21    LD A,(HEV)
  247.         CP 7
  248.         LD A,3
  249.         JR C,$+3
  250.         INC A
  251.         LD (ZAD),A
  252.         RET
  253.  
  254. ;Кузнец дает топор
  255. SC22    LD A,22
  256.         CALL RUN_Q
  257.         LD A,8
  258.         LD (ZAD),A
  259.         ;INC A ;bug???
  260.         JP SC4B
  261.  
  262. ;Можно говорить про пиво с барменом
  263. SC23    LD A,12
  264.         CALL RUN_Q
  265.         LD A,5
  266.         LD (ZAD),A
  267.         LD A,2
  268.         LD (PET),A
  269.         RET
  270.  
  271. ;Петро попросил ингредиенты пива
  272. SC24    LD A,(PET)
  273.         CP 3
  274.         RET Z     ;уже выполняли скрипт
  275.         LD A,13
  276.         CALL RUN_Q
  277.         LD A,3
  278.         LD (PET),A
  279.         DEC A
  280. SC24_   LD (BUK),A
  281.         RET
  282.  
  283. ;Буквин сказал что для пива нужно
  284. SC25    LD A,14
  285.         CALL RUN_Q
  286.         LD A,9
  287.         LD (HEV),A
  288.         LD A,3
  289.         JR SC24_
  290.  
  291. ;Запускаем счетчик для варения пива
  292. SC26    LD BC,10000 ;чуть более 3 минут
  293.         LD DE,SC261
  294.         CALL INSERT
  295.         LD A,9
  296. SC26_   LD (PET),A
  297.         RET
  298. SC261   LD A,10
  299.         JR SC26_
  300.  
  301. ;бармен дает бочонок
  302. ;проверяем нужно ли просить пустой флакон?
  303. SC27    LD A,(QUEST+5)
  304.         AND A
  305.         LD A,12
  306.         JR NZ,SC27_
  307.         DEC A
  308. SC27_   LD (PET),A
  309.         LD A,21
  310.         CALL RUN_Q
  311.         LD A,7+15
  312. SC271   JP SC4B
  313.  
  314. ;бармен дает пустой флакон
  315. SC28    LD A,12
  316.         LD (PET),A
  317.         LD A,7+8
  318.         JR SC271
  319.  
  320. ;Даем Петро мед
  321. SC29    LD B,13
  322.         LD A,(PET)
  323.         CP 3
  324.         JR C,SC30_
  325.  
  326. ;Даем Петро ингр.
  327. SC30    XOR A
  328.         LD (KARM),A
  329.         LD HL,QUEST+21
  330.         INC (HL)
  331.         LD A,(HL)
  332.         CP 3    ;послед. ингр.?
  333.         RET C
  334.         LD B,8
  335. SC30_   POP HL
  336.         POP DE
  337.         POP AF
  338.         LD A,B  ;номер диалога
  339.         PUSH AF
  340.         PUSH DE
  341.         PUSH HL
  342.         RET
  343.  
  344. ;Появление кастрюли
  345. SC31    LD A,38
  346.         CALL RUN_Q
  347.         LD A,15
  348.         LD (PET),A
  349.         LD DE,KAST
  350.         JP INSERT-3 ;ставим таск в очередь
  351.  
  352. KAST    LD DE,v30+4
  353.         LD HL,SPR+((150+30)*32);кастрюля
  354.  
  355. FADE    LD (FAD1+2),DE  ;свойства предмета
  356.         LD (FAD2+1),HL  ;какой предм. появится
  357.  
  358. FADE2   LD HL,RNDTB1
  359.         CALL RND2
  360.         AND 15
  361.         ADD A,A
  362.         LD E,A
  363.         LD D,0
  364.         ADD HL,DE
  365.         LD A,(HL)   ;Y
  366.         INC HL
  367.         LD L,(HL)   ;X
  368.         LD H,A
  369.         LD DE,(HEROCRD)
  370.         EX DE,HL
  371.         AND A
  372.         SBC HL,DE
  373.         JR Z,FADE2 ;координаты героя
  374.                    ;и проявляемой вещи совпали
  375.         LD H,D
  376.         LD L,E
  377.  
  378.         RLC E,E
  379.         SRL D
  380.         RR E
  381.         SRL D
  382.         RR E
  383.         LD A,MASSIVE/256
  384.         ADD A,D
  385.         LD D,A
  386.  
  387.         LD A,(DE)
  388.         AND A
  389.         JR NZ,FADE2   ;уже что-то лежит
  390.  
  391.         INC A
  392.         LD (DE),A
  393.  
  394.         CALL CalcMap+3
  395.  
  396.         LD E,(HL)     ;берем спрайт с карты
  397.         INC HL
  398.         LD D,(HL)
  399.  
  400. FAD1    LD (0),DE  ;запоминаем в свойствах предмета, чтобы после
  401.                    ;как возьмут вещь восстановить фон
  402. FAD2    LD DE,0
  403.         LD (HL),D    ;ставим спрайт вещи на карте
  404.         DEC HL
  405.         LD (HL),E
  406.         RET
  407.  
  408. ;Петро дает спички
  409. SC32    LD A,39
  410.         CALL RUN_Q
  411.         LD A,12
  412.         LD (PET),A
  413.         LD A,7+31
  414.         JP SC4B
  415.  
  416. ;Появление амулета
  417. SC33    LD A,15
  418.         CALL RUN_Q
  419.         LD A,10
  420.         LD (HEV),A
  421.         LD DE,AMUL
  422.         JP INSERT-3
  423.  
  424. ;амулет
  425. AMUL    LD DE,v26+4
  426.         LD HL,SPR+((150+26)*32)
  427.         JR FADE
  428.  
  429. ;Рубим скелетов
  430. SC34    LD A,23
  431.         CALL RUN_Q
  432.  
  433.         LD A,(ITEM)
  434.         SUB 3
  435.         LD BC,127
  436.         LD HL,MAP+40+(128*3)
  437.         LD DE,MASSIVE+20+(64*3)
  438.         JR Z,SC341
  439.         LD HL,MAP+84+(128*13)
  440.         LD DE,MASSIVE+42+(64*13)
  441.         DEC A
  442.         JR Z,SC341
  443.         LD HL,MAP+92+(128*8)
  444.         LD DE,MASSIVE+46+(64*8)
  445.         DEC A
  446.         JR Z,SC341
  447.         LD HL,MAP+98+(128*10)
  448.         LD DE,MASSIVE+49+(64*10)
  449.         LD A,2
  450.         LD (FEK),A
  451.  
  452. SC341   XOR A
  453.         LD (KOST1+4),A
  454.         LD (HL),25
  455.         INC HL
  456.         LD (HL),A
  457.         ADD HL,BC
  458.         LD (HL),25
  459.         INC HL
  460.         LD (HL),2
  461.         EX DE,HL
  462.         LD (HL),A
  463.         RET
  464.  
  465. ;Пшеницу меняем на зерна
  466. SC35    LD A,20
  467.         CALL RUN_Q
  468.         LD A,7+17
  469.         JP SC4B
  470.  
  471. ;Разжигаем костер
  472. SC36    LD A,40
  473.         CALL RUN_Q
  474.         LD A,3
  475.         LD (FIRS+3),A
  476.         LD HL,V65
  477.         LD (VV),HL
  478.         LD HL,0
  479.         LD (FT2),HL
  480.         LD (FT2+4),HL
  481.         LD (FT2+8),HL
  482.         LD HL,PET
  483.         LD A,(HL)
  484.         CP 14
  485.         RET NZ
  486.         LD (HL),12
  487.         RET
  488.  
  489. ;Фекла просит книгу
  490. SC37    LD A,24
  491.         CALL RUN_Q
  492.         LD A,4
  493.         LD (BUK),A
  494.         INC A
  495.         LD (FEK),A
  496.         RET
  497.  
  498. ;Буквин дает книгу
  499. SC38    LD A,25
  500.         CALL RUN_Q
  501.         LD A,3
  502.         LD (BUK),A
  503.         LD A,7+13
  504.         JP SC4B
  505.  
  506. ;Буквину можно давать деньги
  507. SC39    LD HL,#1005
  508.         LD (BK),HL
  509.         LD A,8
  510.         LD (BUK),A
  511.         RET
  512.  
  513. ;Фекла дает чеснок
  514. SC40    LD A,26
  515.         CALL RUN_Q
  516.         LD A,4
  517.         LD (FEK),A
  518.         LD A,7+14
  519.         JP SC4B
  520.  
  521. ;Мажемся чесноком (летучие мыши исчезают)
  522. SC41    LD A,27
  523.         CALL RUN_Q
  524.  
  525.         LD HL,#001F    ;аним. группа исчезн.
  526.  
  527.         LD DE,MASSIVE+748
  528.         LD A,(DE)
  529.         AND A
  530.         JR Z,$+7
  531.         XOR A
  532.         LD (DE),A
  533.         LD (MAP+1496),HL
  534.  
  535.         LD DE,MASSIVE+819
  536.         LD A,(DE)
  537.         AND A
  538.         JR Z,$+7
  539.         XOR A
  540.         LD (DE),A
  541.         LD (MAP+1638),HL
  542.  
  543.         LD DE,MASSIVE+628
  544.         LD A,(DE)
  545.         AND A
  546.         JR Z,$+7
  547.         XOR A
  548.         LD (DE),A
  549.         LD (MAP+1256),HL
  550.  
  551.         LD DE,MASSIVE+502
  552.         LD A,(DE)
  553.         AND A
  554.         JR Z,SC41_
  555.         XOR A
  556.         LD (DE),A
  557.         LD (MAP+1004),HL
  558.  
  559. SC41_   LD HL,SPR
  560.         LD (UNDR),HL
  561.         LD (INVT2+4),A ;A=0
  562.         JP SC4B
  563.  
  564. ;Душим мышь
  565. SC42    LD A,27
  566.         CALL RUN_Q
  567.         LD HL,(ADRSPRT)
  568.         LD DE,(ADRELM)
  569.         XOR A
  570.         LD (INVT2+4),A
  571.         LD (DE),A
  572.         LD (HL),#1F
  573.         INC HL
  574.         LD (HL),A
  575.         LD HL,SPR
  576.         LD (UNDR),HL
  577.         RET
  578.  
  579. ;Даем зубы Хевору
  580. SC43    CALL SC0
  581.         XOR A
  582.         JP SC4B
  583.  
  584. ;Зловет колдует 1-й раз
  585. SC44    LD A,28
  586.         CALL RUN_Q
  587.         LD A,6
  588.         LD (FEK),A
  589.         LD H,1           ;номер колдовства
  590.  
  591.         LD A,3
  592.  
  593.         LD DE,SC44_
  594. SC441   LD BC,6000
  595.         LD (ZLO),A
  596.         LD A,H
  597.         LD (QUEST+43),A  ;Обозначаем номер колдовства
  598.         CALL INSERT
  599.  
  600. ;Когда что-то даем Зловету
  601. SC442
  602.         LD HL,RNDTB1
  603.         CALL RND2
  604.         AND 15
  605.         ADD A,A
  606.         LD E,A
  607.         LD D,0
  608.         ADD HL,DE
  609.         LD A,(HL)   ;Y
  610.         INC HL
  611.         LD L,(HL)   ;X
  612.         LD H,A
  613.  
  614.         LD E,L
  615.         LD D,H
  616.  
  617.         RLC L,L
  618.         SRL H
  619.         RR L
  620.         SRL H
  621.         RR L
  622.         LD A,MASSIVE/256
  623.         ADD A,H
  624.         LD H,A
  625.  
  626.         LD A,(HL)
  627.         AND A
  628.         JR NZ,SC442
  629.  
  630.         LD (HEROCRD),DE
  631.         CALL CENTR2
  632.         LD A,1
  633.         JR SC44_2
  634.  
  635. ;Зловет колдует 2-й раз
  636. SC45    LD HL,MAG1
  637.         LD (curmagic),hl;(MG1+1),HL
  638.         LD H,2      ;номер колдовства
  639.         LD A,4
  640.         LD DE,SC45_
  641.         JR SC441
  642.  
  643. ;выключ. колдовство 1,2,3
  644. SC45_
  645.         LD HL,reter;MAG2-1
  646.         LD (curmagic),hl;(MG1+1),HL
  647. ;выключ. колдовство 1
  648. SC44_   XOR A
  649.         LD (QUEST+43),A  ;Обозначаем колдовство
  650. SC44_2  LD (P3p1),A      ;колдовство первое
  651.         RET
  652.  
  653. ;Зловет колдует 3-й раз
  654. SC46    LD HL,MAG2
  655.         LD (curmagic),hl;(MG1+1),HL
  656.         LD BC,15000
  657.         LD DE,SC45_
  658.         LD H,3
  659.         LD A,5
  660.         JR SC441+3
  661.  
  662. ;Фекла говорит о таракане и ягодах
  663. SC47    LD A,29
  664.         CALL RUN_Q
  665.         LD A,10
  666.         LD (ZAD),A
  667.         LD A,6
  668.         LD (ALE),A
  669.         LD A,5
  670.         LD (FEK),A
  671.         RET
  672.  
  673. ;Кузнец дает таракана
  674. SC48    LD A,30
  675.         CALL RUN_Q
  676.         LD A,3
  677.         LD (ZAD),A
  678.         LD A,7+27
  679.         JP SC4B
  680.  
  681. ;Аленушка просит веревку
  682. SC49    LD A,5
  683.         LD (ALE),A
  684.         LD DE,VEREV
  685.         JP INSERT-3
  686.  
  687. ;Появление веревки
  688. VEREV   LD DE,v6+4
  689.         LD HL,SPR+((150+6)*32)
  690.         JP FADE
  691.  
  692. ;Становимся невидимым от зелья
  693. SC50    LD A,33
  694.         CALL RUN_Q
  695. ;Изменяем процедуру печати героя
  696. ;будет ходить силуэт героя
  697.         XOR A
  698.         LD (NEV1),A
  699.         LD (NEV2),A
  700.         LD (NEV3),A
  701.         LD HL,#0202
  702.         LD (FTZL),HL ;можно применять магнит
  703.  
  704. ;разговоры изменяем
  705.  
  706. ;L-текущ. диалог
  707. ;H-текущ. диалог на ненужную вещь
  708.  
  709.         LD HL,#0706
  710.         LD (ZLO),HL
  711.         LD (BUK),HL
  712.         LD HL,#0D0C
  713.         LD (ZAD),HL
  714.         LD HL,#0907
  715.         LD (FEK),HL
  716.         INC L
  717.         LD (ALE),HL
  718.         LD HL,#0F0D
  719.         LD (HEV),HL
  720.         LD HL,#1211
  721.         LD (PET),HL
  722.         JP SC4B
  723.  
  724. ;Хевор говорит сжечь Зловета
  725. SC51    LD A,37
  726.         CALL RUN_Q
  727.         LD A,8
  728.         LD (HEV),A
  729. ;Горит ли костер?
  730.         LD A,(QUEST+40)
  731.         AND A
  732.         RET NZ
  733.         LD A,14
  734.         LD (PET),A
  735.         RET
  736.  
  737. ;Отнимаем посох
  738. SC52    LD A,34
  739.         CALL RUN_Q
  740.         LD BC,500   ;10 сек
  741.         LD DE,SC52_
  742.        CALL INSERT
  743.         LD HL,SPR+((150+19)*32);посох
  744.         LD DE,SPR+6944
  745.         LD BC,SPR+6976
  746. SC521   LD (MAP+624),HL
  747.         LD (MAP+626),DE
  748.         LD (MAP+754),BC
  749.         LD A,1
  750.         LD (REMAP+1),A
  751.         RET
  752.  
  753. ;Зловет забирает посох обратно
  754. SC52_   LD A,(MASSIVE+312)
  755.         AND A
  756.         RET Z   ;посох уже взяли
  757.         XOR A
  758.         LD (QUEST+34),A
  759.         LD HL,SPR
  760.         LD DE,SPR+6880
  761.         LD BC,SPR+6912
  762.         JR SC521
  763.  
  764. ;Уменьшаем Зловета
  765. SC53    LD A,35
  766.         CALL RUN_Q
  767.  
  768.         XOR A
  769.         LD (INVT2+4),A
  770.         LD (INVT3+4),A
  771.         LD (MASSIVE+313),A
  772.  
  773.         LD HL,#001F    ;аним. группа исчезновения
  774.         LD (MAP+626),HL
  775.         LD L,#21       ;еще одна группа
  776.         LD (MAP+754),HL
  777.  
  778.         LD HL,SPR
  779.         LD (UNDR),HL
  780.         LD HL,SPR+(159*32)
  781.         LD (UNDR2),HL
  782.  
  783.         LD A,3
  784.         LD (RUMB+3),A  ;оживляем дом Зловета
  785.         LD DE,ZELYE
  786.         JP INSERT-3
  787.  
  788. ;зелье видимости
  789. ZELYE   LD DE,v24+4
  790.         LD HL,SPR+((150+24)*32)
  791.         JP FADE
  792.  
  793. ;Становимся видимым от зелья
  794. SC54    CALL SC55
  795.         JP SC4B
  796.  
  797. ;Становимся видимым от посоха
  798. SC55    LD A,36
  799.         CALL RUN_Q
  800. ;Изменяем печать спрайта героя
  801.         LD A,#AA    ;XOR D
  802.         LD (NEV1),A
  803.         LD A,#AC    ;XOR H
  804.         LD (NEV2),A
  805.         LD A,#AD    ;XOR L
  806.         LD (NEV3),A
  807.  
  808. ;разговоры изменяем
  809.  
  810. ;L-текущ. диалог
  811. ;H-текущ. диалог на ненужную вещь
  812.  
  813.         LD HL,#0003
  814.         LD (BUK),HL
  815.         LD (ZAD),HL
  816.         LD L,5
  817.         LD (FEK),HL
  818.         LD (ALE),HL
  819.         LD L,12
  820.         LD (PET),HL
  821.  
  822.         LD A,(QUEST+41) ;сгорел ли Зловет?
  823.         AND A
  824.         JR Z,$+4
  825.         LD L,16
  826.         LD (HEV),HL
  827.  
  828.         LD HL,#0908
  829.         LD (ZLO),HL
  830.  
  831. ;больше не применять посох и зелье
  832.         XOR A
  833.         LD (v19),A
  834.         LD (v24),A
  835.         RET
  836.  
  837. ;Горит ли костер?
  838. SC56    LD A,(QUEST+40)
  839.         AND A
  840.         RET NZ
  841.         JP SC11_
  842.  
  843. ;Сжигаем Зловета, появляется колокол
  844. SC57    LD A,41
  845.         CALL RUN_Q
  846.  
  847.         LD A,(QUEST+36) ;Видим ли герой?
  848.         JR Z,SC571
  849.  
  850.         LD A,16
  851.         LD (HEV),A
  852.  
  853. SC571   LD A,SPR/256
  854.         LD DE,122
  855.         LD HL,MAP+372
  856.  
  857.         LD C,3
  858.         LD B,3
  859. SC57_   LD (HL),D ;0
  860.         INC HL
  861.         LD (HL),A
  862.         INC HL
  863.         DJNZ SC57_
  864.         ADD HL,DE
  865.         DEC C
  866.         JR NZ,SC57_-2
  867.  
  868.         XOR A
  869.         LD HL,MASSIVE+186
  870.         LD E,61
  871. SC572_  LD C,3
  872.         LD B,3
  873.         LD (HL),A ;0
  874.         INC L
  875.         DJNZ $-2
  876.         ADD HL,DE
  877.         DEC C
  878.         JR NZ,SC572_+2
  879.  
  880.         INC A
  881.         LD (MASSIVE+186+65),A
  882.  
  883.         LD HL,MAP+502   ;ложим колокол
  884.         LD (HL),D ;0
  885.         INC HL
  886.         LD (HL),#D5
  887.         XOR A
  888.         JP SC4B
  889.  
  890. ;Можно ли лететь на метле
  891. SC58    LD B,31
  892.         LD HL,(HEROCRD)
  893.         LD A,H ;Y
  894.         CP 53
  895.         JR C,SC58_
  896.         LD A,L ;X
  897.         CP 21
  898.         JR C,SC58_
  899.         CP 35
  900.         JR NC,SC58_
  901.         LD B,3
  902. SC58_   LD A,B
  903.         RET
  904.  
  905. ;Появление Глеба
  906. SC59    LD A,4
  907.         LD HL,#0001
  908. SC59_   LD (HEV),A
  909.         LD DE,#0204
  910. ;      LD A,6
  911.         LD (MAP+58+1792),HL
  912.         LD H,D
  913.         LD (MAP+60+1792),HL
  914.         LD H,E
  915.         LD (MAP+58+1920),HL
  916. ;      LD H,A
  917.         LD H,6
  918.         LD (MAP+60+1920),HL
  919. ;Обнуление кармана
  920. SC64    XOR A
  921.         JP SC4B
  922.  
  923. ;Исчезание Глеба
  924. SC60    LD A,42
  925.         CALL RUN_Q
  926.         LD HL,0
  927.         LD (MASSIVE+925),HL
  928.         LD (MASSIVE+989),HL
  929.         LD L,#1B
  930.         LD A,5
  931.         JR SC59_
  932.  
  933. ;Кузнец просит курить
  934. SC61    LD A,3
  935.         LD (ZAD),A
  936.         LD HL,#230A
  937.         LD (ZD),HL
  938.         RET
  939.        
  940. ;Конец игры
  941. SC62    XOR A
  942.         LD (END_G_1),A
  943.         JP SC4B
  944.  
  945. ;Фекла дает зубы
  946. SC63    CALL SC0
  947.         LD A,7+34
  948.         JP SC4B
  949.  
  950. ;Проверка видимы ли мы для Хевора?
  951. SC65    LD C,15
  952.         LD A,(QUEST+33)
  953.         LD B,A
  954.         LD A,(QUEST+36)
  955.         XOR B
  956.         RET Z
  957.         LD B,C
  958.         JP SC30_
  959.  
  960. ;Для Фёклы
  961. SC66    LD C,9
  962.         JR SC65+2
  963.  
  964. ;Видели ли/говорили с Глебом?
  965. SC67    LD A,(LEO1+4)
  966.         LD HL,#C582  ;адрес реплики,если не видели Глеба
  967.         AND A
  968.         RET Z
  969.         LD HL,#CC68  ;если видели, но не говорили
  970.         RET
  971.  
  972. ;Адреса скриптов
  973. SCRPTB
  974.         DW SC0,SC1,SC2,SC3,SC4,SC5,SC6
  975.         DW SC7,SC8,SC9,SC10,SC11,SC12,SC13
  976.         DW SC14,SC15,SC16,SC17,SC18,SC19
  977.         DW SC20,SC21,SC22,SC23,SC24,SC25
  978.         DW SC26,SC27,SC28,SC29,SC30,SC31
  979.         DW SC32,SC33,SC34,SC35,SC36,SC37
  980.         DW SC38,SC39,SC40,SC41,SC42,SC43
  981.         DW SC44,SC45,SC46,SC47,SC48,SC49
  982.         DW SC50,SC51,SC52,SC53,SC54,SC55
  983.         DW SC56,SC57,SC58,SC59,SC60,SC61
  984.         DW SC62,SC63,SC64,SC65,SC66,SC67
  985.  
  986. ;Воспроизведение звуков
  987. SOUND
  988.         NOP    ;SFX (0-ON, 201-OFF)
  989.         INC H
  990.         DEC H
  991.         RET Z
  992.         LD BC,#FFFD
  993.         LD A,2   ;Плавная установка высоты тона канала B (0-255)
  994.         OUT (C),A
  995.         LD B,#BF
  996.         LD A,(HL)
  997.         OUT (C),A
  998.         INC HL
  999.         LD B,#FF
  1000.         LD A,3   ;Грубая установка высоты тона канала B (0-255)
  1001.         OUT (C),A
  1002.         LD B,#BF
  1003.         LD A,(HL)
  1004.         OUT (C),A
  1005.         LD B,#FF
  1006.         LD A,7         ;Управление каналами.
  1007.         OUT (C),A      ;Биты (0 в бите означает,
  1008.                        ;что функция разрешена):
  1009.                        ;  ШУМ
  1010.         INC HL         ;00CBACBA
  1011.         IN A,(C)       ;     ТОН
  1012.         AND %11101101
  1013.         OR (HL)
  1014.         LD B,#BF
  1015.         OUT (C),A
  1016.         INC HL
  1017.         LD A,9         ;Амплитуда канала B (0-15)
  1018.         LD B,#FF
  1019.         OUT (C),A
  1020.         LD B,#BF
  1021.         LD A,(HL)
  1022.         OUT (C),A      ;Записываем амплитуду в регистр муз.проц.
  1023.         INC HL
  1024.         LD (SAMPLE+1),HL ;Адрес следующего кванта
  1025.         LD A,(HL)
  1026.         OR A
  1027.         RET NZ
  1028. AY_OFF
  1029.         LD (SAMPLE+2),A
  1030.  
  1031. ;       NOP ;RET ;Если музыка играет, то глушить канал не надо
  1032.  
  1033. ;Делаем аплитуду канала B равной нулю
  1034.  
  1035.         LD BC,#FFFD
  1036.         LD A,9
  1037.         OUT (C),A
  1038.         XOR A
  1039.         LD B,#BF
  1040.         OUT (C),A
  1041.         RET
  1042.  
  1043. ;Формат звуков:
  1044. ;Первое число - плавная высота тона
  1045. ;Второе       - грубая высота тона
  1046. ;Третье       - управление каналом:
  1047. ;             = 16 - запрещение шума в канале
  1048. ;             = 2  - запрещение тона в канале
  1049. ;             = 18 - запрещение шум + тон
  1050. ;             = 0  - шум и тон разрешены
  1051. ;Четвертое    - громкость канала (0-15)
  1052. ;Числа пропускать нельзя!
  1053. ;Звук всегда должен оканчиваться нулем!
  1054.  
  1055. ;взятие/выкладывание
  1056. SND_TK
  1057.         DB 1,0,2,15
  1058.         DB 1,0,2,12
  1059.         DB 1,0,2,10
  1060.         DB 1,0,2,8
  1061.         DB 1,0,2,6
  1062.         DB 1,0,2,8
  1063.         DB 1,0,2,10
  1064.         DB 1,0,2,12
  1065.         DB 1,0,2,15
  1066.         DB 1,0,2,12
  1067.         DB 1,0,2,10
  1068.         DB 1,0,2,8
  1069.         DB 1,0,2,6
  1070.         DB 1,0,2,4
  1071.         DB 1,0,2,2
  1072.         DB 0
  1073.  
  1074. ;Применение вещи на герое
  1075. SND_HR
  1076.         DB 40,0,16,15
  1077.         DB 35,0,16,13
  1078.         DB 20,0,16,7
  1079.         DB 10,0,16,2
  1080.         DB 20,0,16,7
  1081.         DB 35,0,16,13
  1082.         DB 40,0,16,15
  1083.         DB 35,0,16,13
  1084.         DB 20,0,16,7
  1085.         DB 10,0,16,2
  1086.         DB 20,0,16,7
  1087.         DB 35,0,16,13
  1088.         DB 40,0,16,15
  1089.         DB 35,0,16,13
  1090.         DB 20,0,16,7
  1091.         DB 10,0,16,2
  1092.         DB 0,0,18,0
  1093.         DB 0
  1094.  
  1095. ;Продолжение диалога (листание)
  1096. SND_NXT
  1097.         DB 100,0,16,15
  1098.         DB 90,0,16,14
  1099.         DB 60,0,16,10
  1100.         DB 50,0,16,8
  1101.         DB 30,0,16,6
  1102.         DB 10,0,16,4
  1103.         DB 5,0,16,2
  1104.         DB 0
  1105.  
  1106. ;Применение вещи на объекте
  1107. SND_OBJ
  1108.         DB 100,0,16,15
  1109.         DB 95,0,16,14
  1110.         DB 85,0,16,12
  1111.         DB 60,0,16,10
  1112.         DB 50,0,16,8
  1113.         DB 30,0,16,6
  1114.         DB 10,0,16,4
  1115.  
  1116.         DB 200,0,16,15
  1117.         DB 160,0,16,14
  1118.         DB 130,0,16,13
  1119.         DB 95,0,16,11
  1120.         DB 93,0,16,10
  1121.         DB 90,0,16,9
  1122.         DB 85,0,16,7
  1123.         DB 80,0,16,6
  1124.         DB 40,0,16,2
  1125.         DB 0
  1126.  
  1127. ;Завершение диалога
  1128. SND_END
  1129.         DB 30,0,0,15
  1130.         DB 20,0,0,14
  1131.         DB 1,0,2,13
  1132.         DB 1,0,2,10
  1133.         DB 1,0,2,8
  1134.         DB 1,0,2,5
  1135.         DB 0
  1136.  
  1137. ;Появление вещи/выполнение таска
  1138. SND_TSK
  1139.         DB 50,0,16,15
  1140.         DB 45,0,16,14
  1141.         DB 43,0,16,12
  1142.         DB 40,0,16,10
  1143.  
  1144.         DB 70,0,16,15
  1145.         DB 65,0,16,14
  1146.         DB 63,0,16,12
  1147.         DB 60,0,16,10
  1148.  
  1149.         DB 57,0,16,15
  1150.         DB 55,0,16,13
  1151.         DB 53,0,16,13
  1152.         DB 50,0,16,10
  1153.         DB 35,0,16,14
  1154.         DB 17,0,16,13
  1155.         DB 15,0,16,9
  1156.         DB 15,0,16,8
  1157.         DB 0
  1158.  
  1159. ;Листание вещей в мешке
  1160. SND_LST
  1161.         DB 200,0,16,15
  1162.         DB 150,0,16,15
  1163.         DB 100,0,16,15
  1164.         DB 95,0,16,14
  1165.         DB 93,0,16,12
  1166.         DB 90,0,16,10
  1167.         DB 80,0,16,10
  1168.         DB 70,0,16,10
  1169.         DB 40,0,16,10
  1170.         DB 0
  1171.  
  1172. ;ICQ sound (rmx by Bulba)
  1173. ;Начало разговора/отдача вещи
  1174. SND_SPK
  1175.         DB #94,0,0,#C
  1176.         DB #94,0,16,#F
  1177.         DB #94,0,16,12
  1178.         DB #94,0,16,9
  1179.         DB #94,0,16,2
  1180.         DB #94,0,16,1
  1181.         DB #94,0,16,0
  1182.         DB #94,0,16,0
  1183.         DB #BA,0,16,9
  1184.         DB #BA,0,16,#C
  1185.         DB #BA,0,16,#F
  1186.         DB #BA,0,16,#E
  1187.         DB #BA,0,16,#D
  1188.         DB #BA,0,16,#C
  1189.         DB #BA,0,16,#C
  1190.         DB #BA,0,16,#C
  1191.         DB #BA,0,16,#B
  1192.         DB #BA,0,16,#B
  1193.         DB #BA,0,16,#B
  1194.         DB #BA,0,16,#A
  1195.         DB #BA,0,16,9
  1196.         DB #BA,0,16,9
  1197. SND     DB 0
  1198.  
  1199. ;Инициализация переменных игры
  1200. INIGAME
  1201.        if 1==0 ;мы это держим в VARS
  1202.         LD A,(QUEST+43)
  1203.         EXA
  1204.         CALL SC45_;Обнуляем колдовство
  1205.         EXA
  1206.         LD B,1
  1207.         AND A
  1208.         JR Z,ING0 ;Зловет не колдовал
  1209.         DEC A
  1210.         JR Z,INGA ;колдовал 1-й раз
  1211.         DEC B     ;B=0
  1212.         DEC A
  1213.         LD HL,MAG1
  1214.         JR Z,INGB ;2-й раз
  1215.         LD HL,MAG2;3-й
  1216. INGB    LD (curmagic),hl;(MG1+1),HL
  1217. INGA    LD A,B
  1218.         LD (P3p1),A
  1219.        endif
  1220.  
  1221. ING0    LD HL,#AAAC
  1222.         LD B,#AD
  1223.         LD A,(QUEST+36)
  1224.         AND A
  1225.         JR NZ,ING1 ;герой видим
  1226.         LD A,(QUEST+33)
  1227.         AND A
  1228.         JR Z,ING1  ;герой видим
  1229.  
  1230. ;Герой невидим
  1231.         LD HL,0
  1232.         LD B,H
  1233.  
  1234. ING1    LD A,H      ;XOR D
  1235.         LD (NEV1),A
  1236.         LD A,L      ;XOR H
  1237.         LD (NEV2),A
  1238.         LD A,B      ;XOR L
  1239.         LD (NEV3),A
  1240.  
  1241.         LD HL,MESHOK
  1242.         LD (MSTRT+2),HL
  1243.         LD HL,Right
  1244.         LD (SPRHERO+1),HL
  1245.         XOR A
  1246.         LD (TILED+1),A
  1247.         LD (CCURS+1),A
  1248.         INC A
  1249.         LD (END_G_1),A
  1250.         LD (INV+1),A
  1251.         INC A
  1252.         LD (ROTATE+1),A
  1253.         LD (Prev+1),A
  1254.         EXA
  1255.         CALL SPRHERO
  1256.         CALL EndStep+1
  1257.  
  1258. ;Центровка героя на экране
  1259. CENTR
  1260. HALFV   EQU SCRWD/4
  1261. HALFG   EQU SCRHG/4
  1262.  
  1263.         LD A,(HERO2p1)   ;мигает ли герой
  1264.         AND A
  1265.         RET NZ
  1266. CENTR2  LD A,(RunHero+1) ;идет ли герой
  1267.         AND A
  1268.         RET NZ
  1269.        if EGA
  1270.        ld a,3 ;3,2 - печатаем, 1 - не печатаем (кроме как под героем)
  1271.        endif
  1272.         LD (MAPFLAG+1),A ;обновить экран
  1273.         LD HL,(HEROCRD) ;H-Y, L-X
  1274.         LD BC,0
  1275.         LD A,L
  1276.         CP HALFV
  1277.         JR C,C2
  1278. C1      CP (63-HALFV)
  1279.         LD C,64-(HALFV*2)
  1280.         JR NC,C2
  1281.         SUB HALFV
  1282.         LD C,A
  1283.  
  1284. C2      LD A,H
  1285.         CP HALFG
  1286.         JR C,C4
  1287. C3      CP (63-HALFG)
  1288.         LD B,64-(HALFG*2)
  1289.         JR NC,C4
  1290.         SUB HALFG
  1291.         LD B,A
  1292. C4      LD (DispMapX),BC ;H-Y, L-X
  1293.         LD A,H
  1294.         SUB B
  1295.         LD H,A
  1296.         LD A,L
  1297.         SUB C
  1298.         LD L,A
  1299.         CALL Abs_Pix+3
  1300.         LD (CrdHero+1),HL
  1301.  
  1302. ;Мигание героя
  1303. C5      LD A,COUNT
  1304.         LD (HERO2p1),A
  1305.         LD HL,HERO2
  1306.         LD (CLR_MAPm2),HL
  1307.  
  1308.         LD HL,SND_HR
  1309.         LD (SAMPLE+1),HL
  1310.         RET
  1311.