;MAIN "VERA",8
 
;Ведение игры по сценарию и т.п.
 
;Обозначение выполнения квестов
 
RUN_Q
 
        LD HL,QUEST
 
        LD E,A
 
        LD D,0
 
        ADD HL,DE
 
        INC (HL)
 
        RET 
 
 
 
;Восстанавливаем номер диалога, который был до отдачи вещи
 
SC0     LD HL,(PREV+1)
 
        LD A,(PREV)
 
        LD (HL),A
 
        RET 
 
 
 
;прочит. письмо
 
SC1     XOR A
 
        CALL RUN_Q
 
        RET 
 
 
 
;отдаем волку бутерброд
 
SC2     XOR A
 
        LD (INVT2+4),A
 
        LD (MASSIVE+3602),A
 
        LD (MASSIVE+3666),A
 
        INC A
 
        CALL RUN_Q
 
        LD HL,#001F    ;аним. группа исчезновения
 
        LD (MAP+#1C24),HL
 
        LD (MAP+#1CA4),HL
 
        LD HL,SPR
 
        LD (UNDR),HL
 
        XOR A
 
        LD (INVT2+4),A
 
        JR SC4B
 
 
 
;летим на метле через болото
 
SC3     LD A,(QUEST+2)
 
        XOR 1
 
        LD (QUEST+2),A
 
        LD HL,#3315
 
        JR NZ,SC3_
 
        LD HL,#3B1D
 
SC3_    LD (HEROCRD),HL
 
        JP CENTR2
 
 
 
;Аленушка дает пустой флакон
 
SC4     LD A,3
 
        CALL RUN_Q
 
        LD A,10
 
        LD B,15
 
SC4_    LD (ALE),A
 
        LD A,B
 
SC4B    LD (KARMBK+1),A
 
        RET 
 
 
 
;Наполняем флакон водой
 
SC5     LD A,4
 
        CALL RUN_Q
 
        LD HL,0
 
        LD (FORTAB2),HL ;чтобы больше не наполняли
 
        LD A,11
 
        JR SC4B
 
 
 
;лечим козленка
 
SC6     LD A,5
 
        CALL RUN_Q
 
        XOR A
 
        LD (INVT2+4),A
 
        LD (INVT3+4),A
 
        LD HL,#001F    ;аним. группа исчезновения
 
        LD (MAP+5948),HL
 
        LD L,#21
 
        LD (MAP+6076),HL
 
        LD HL,SPR+(233*32)
 
        LD (UNDR),HL
 
        LD HL,SPR+(234*32)
 
        LD (UNDR2),HL
 
        LD A,4
 
        JR SC4_-2
 
 
 
;Алена дает деньги
 
SC7     LD A,6
 
        CALL RUN_Q
 
        LD A,5
 
        LD B,16+7
 
        JR SC4_
 
 
 
;Хевор дает ведро
 
SC8     LD A,8
 
        CALL RUN_Q
 
        LD A,6
 
        LD (HEV),A
 
        LD A,3
 
        LD (BUK),A
 
        LD A,12
 
        JR SC4B
 
 
 
;Наполняем ведро водой
 
SC9     LD A,9
 
        CALL RUN_Q
 
        LD HL,V38
 
        LD DE,v38
 
        LD BC,0
 
SC9_    LD (V+10),HL
 
        LD (VSVOY+10),DE
 
        LD (VED),BC
 
        RET 
 
 
 
;Оживляем статую
 
SC10    LD A,10
 
        CALL RUN_Q
 
        LD A,7
 
        LD (HEV),A
 
        LD A,3
 
        LD (PBOY+3),A
 
        LD HL,V5
 
        LD DE,v5
 
        LD BC,#050C
 
        JR SC9_
 
 
 
;Наполнено ли ведро водой
 
SC11    LD A,(PBOY+3)
 
        AND A
 
        JR NZ,SC11_
 
        LD HL,(V+10)
 
        LD DE,V38
 
        SBC HL,DE
 
        RET Z
 
SC11_   POP HL
 
        POP DE
 
        POP AF
 
        XOR A
 
        PUSH AF
 
        PUSH DE
 
        PUSH HL
 
        RET 
 
 
 
;Хевор дает магнит
 
SC12    LD A,11
 
        CALL RUN_Q
 
        LD A,2
 
        LD (ZAD),A
 
        LD A,8
 
        LD (HEV),A
 
        LD A,9
 
        JP SC4B
 
 
 
;Режем пшеницу и тупим серп
 
SC13    LD A,17
 
        CALL RUN_Q
 
        LD HL,(SPRCURS+1)
 
        LD (v3+4),HL
 
        LD DE,SPR+((150+3)*32)
 
        LD HL,0   ;лезвие не режет пшеницу
 
        LD (FLZ),HL
 
SC13_   LD A,10
 
        LD (FSR+2),A ;затупили
 
        LD (FSR+6),A
 
        LD HL,(ADRSPRT)
 
        LD (HL),E
 
        INC HL
 
        LD (HL),D
 
        RET 
 
 
 
;Режем хмель и тупим серп
 
SC14    LD A,18
 
        CALL RUN_Q
 
        LD HL,0   ;лезвие не режет хмель
 
        LD (FLZ+4),HL
 
        LD HL,(SPRCURS+1)
 
        LD (v21+4),HL
 
        LD DE,SPR+((150+21)*32)
 
        JR SC13_
 
 
 
;Хевор дает серп
 
SC15    LD A,16
 
        CALL RUN_Q
 
        LD A,8
 
        LD (HEV),A
 
 
 
        LD DE,LEZV
 
        CALL INSERT-3
 
 
 
        LD A,22+7
 
SC15_   JP SC4B
 
 
 
;появление лезвия
 
LEZV    LD DE,v32+4
 
        LD HL,SPR+((150+32)*32)
 
        JP FADE
 
 
 
;Алена дает ягоды
 
SC16    LD A,31
 
        CALL RUN_Q
 
        LD A,5
 
        LD (ALE),A
 
        LD A,7+29
 
        JR SC15_
 
 
 
;Режем пшеницу и тупим лезвие
 
SC17    LD A,17
 
        CALL RUN_Q
 
        LD HL,(SPRCURS+1)
 
        LD (v3+4),HL
 
        LD DE,SPR+((150+3)*32)
 
        LD HL,0 ;серп не режет пшеницу
 
        LD (FSR),HL
 
SC17_   LD A,14
 
        LD (FLZ+2),A ;затупили
 
        LD (FLZ+6),A
 
        LD HL,(ADRSPRT)
 
        LD (HL),E
 
        INC HL
 
        LD (HL),D
 
        RET 
 
 
 
;Режем хмель и тупим лезвие
 
SC18    LD A,18
 
        CALL RUN_Q
 
        LD HL,0 ;серп не режет хмель
 
        LD (FSR+4),HL
 
        LD HL,(SPRCURS+1)
 
        LD (v21+4),HL
 
        LD DE,SPR+((150+21)*32)
 
        JR SC17_
 
 
 
;Прочитано ли письмо Верой?
 
SC19    LD A,(QUEST)
 
        AND A
 
        JP Z,SC11_
 
        LD A,7
 
        JP RUN_Q
 
 
 
;Мед во флакон
 
SC20    LD A,19
 
        CALL RUN_Q
 
        LD HL,0
 
        LD (ULEY),HL
 
        LD A,7+20
 
        JP SC4B
 
 
 
;Проверка поговорили ли с Хевором
 
SC21    LD A,(HEV)
 
        CP 7
 
        LD A,3
 
        JR C,$+3
 
        INC A
 
        LD (ZAD),A
 
        RET 
 
 
 
;Кузнец дает топор
 
SC22    LD A,22
 
        CALL RUN_Q
 
        LD A,8
 
        LD (ZAD),A
 
        ;INC A ;bug???
 
        JP SC4B
 
 
 
;Можно говорить про пиво с барменом
 
SC23    LD A,12
 
        CALL RUN_Q
 
        LD A,5
 
        LD (ZAD),A
 
        LD A,2
 
        LD (PET),A
 
        RET 
 
 
 
;Петро попросил ингредиенты пива
 
SC24    LD A,(PET)
 
        CP 3
 
        RET Z     ;уже выполняли скрипт
 
        LD A,13
 
        CALL RUN_Q
 
        LD A,3
 
        LD (PET),A
 
        DEC A
 
SC24_   LD (BUK),A
 
        RET 
 
 
 
;Буквин сказал что для пива нужно
 
SC25    LD A,14
 
        CALL RUN_Q
 
        LD A,9
 
        LD (HEV),A
 
        LD A,3
 
        JR SC24_
 
 
 
;Запускаем счетчик для варения пива
 
SC26    LD BC,10000 ;чуть более 3 минут
 
        LD DE,SC261
 
        CALL INSERT
 
        LD A,9
 
SC26_   LD (PET),A
 
        RET 
 
SC261   LD A,10
 
        JR SC26_
 
 
 
;бармен дает бочонок
 
;проверяем нужно ли просить пустой флакон?
 
SC27    LD A,(QUEST+5)
 
        AND A
 
        LD A,12
 
        JR NZ,SC27_
 
        DEC A
 
SC27_   LD (PET),A
 
        LD A,21
 
        CALL RUN_Q
 
        LD A,7+15
 
SC271   JP SC4B
 
 
 
;бармен дает пустой флакон
 
SC28    LD A,12
 
        LD (PET),A
 
        LD A,7+8
 
        JR SC271
 
 
 
;Даем Петро мед
 
SC29    LD B,13
 
        LD A,(PET)
 
        CP 3
 
        JR C,SC30_
 
 
 
;Даем Петро ингр.
 
SC30    XOR A
 
        LD (KARM),A
 
        LD HL,QUEST+21
 
        INC (HL)
 
        LD A,(HL)
 
        CP 3    ;послед. ингр.?
 
        RET C
 
        LD B,8
 
SC30_   POP HL
 
        POP DE
 
        POP AF
 
        LD A,B  ;номер диалога
 
        PUSH AF
 
        PUSH DE
 
        PUSH HL
 
        RET 
 
 
 
;Появление кастрюли
 
SC31    LD A,38
 
        CALL RUN_Q
 
        LD A,15
 
        LD (PET),A
 
        LD DE,KAST
 
        JP INSERT-3 ;ставим таск в очередь
 
 
 
KAST    LD DE,v30+4
 
        LD HL,SPR+((150+30)*32);кастрюля
 
 
 
FADE    LD (FAD1+2),DE  ;свойства предмета
 
        LD (FAD2+1),HL  ;какой предм. появится
 
 
 
FADE2   LD HL,RNDTB1
 
        CALL RND2
 
        AND 15
 
        ADD A,A
 
        LD E,A
 
        LD D,0
 
        ADD HL,DE
 
        LD A,(HL)   ;Y
 
        INC HL
 
        LD L,(HL)   ;X
 
        LD H,A
 
        LD DE,(HEROCRD)
 
        EX DE,HL
 
        AND A
 
        SBC HL,DE
 
        JR Z,FADE2 ;координаты героя
 
                   ;и проявляемой вещи совпали
 
        LD H,D
 
        LD L,E
 
 
 
        RLC E,E
 
        SRL D
 
        RR E
 
        SRL D
 
        RR E
 
        LD A,MASSIVE/256
 
        ADD A,D
 
        LD D,A
 
 
 
        LD A,(DE)
 
        AND A
 
        JR NZ,FADE2   ;уже что-то лежит
 
 
 
        INC A
 
        LD (DE),A
 
 
 
        CALL CalcMap+3
 
 
 
        LD E,(HL)     ;берем спрайт с карты
 
        INC HL
 
        LD D,(HL)
 
 
 
FAD1    LD (0),DE  ;запоминаем в свойствах предмета, чтобы после
 
                   ;как возьмут вещь восстановить фон
 
FAD2    LD DE,0
 
        LD (HL),D    ;ставим спрайт вещи на карте
 
        DEC HL
 
        LD (HL),E
 
        RET 
 
 
 
;Петро дает спички
 
SC32    LD A,39
 
        CALL RUN_Q
 
        LD A,12
 
        LD (PET),A
 
        LD A,7+31
 
        JP SC4B
 
 
 
;Появление амулета
 
SC33    LD A,15
 
        CALL RUN_Q
 
        LD A,10
 
        LD (HEV),A
 
        LD DE,AMUL
 
        JP INSERT-3
 
 
 
;амулет
 
AMUL    LD DE,v26+4
 
        LD HL,SPR+((150+26)*32)
 
        JR FADE
 
 
 
;Рубим скелетов
 
SC34    LD A,23
 
        CALL RUN_Q
 
 
 
        LD A,(ITEM)
 
        SUB 3
 
        LD BC,127
 
        LD HL,MAP+40+(128*3)
 
        LD DE,MASSIVE+20+(64*3)
 
        JR Z,SC341
 
        LD HL,MAP+84+(128*13)
 
        LD DE,MASSIVE+42+(64*13)
 
        DEC A
 
        JR Z,SC341
 
        LD HL,MAP+92+(128*8)
 
        LD DE,MASSIVE+46+(64*8)
 
        DEC A
 
        JR Z,SC341
 
        LD HL,MAP+98+(128*10)
 
        LD DE,MASSIVE+49+(64*10)
 
        LD A,2
 
        LD (FEK),A
 
 
 
SC341   XOR A
 
        LD (KOST1+4),A
 
        LD (HL),25
 
        INC HL
 
        LD (HL),A
 
        ADD HL,BC
 
        LD (HL),25
 
        INC HL
 
        LD (HL),2
 
        EX DE,HL
 
        LD (HL),A
 
        RET 
 
 
 
;Пшеницу меняем на зерна
 
SC35    LD A,20
 
        CALL RUN_Q
 
        LD A,7+17
 
        JP SC4B
 
 
 
;Разжигаем костер
 
SC36    LD A,40
 
        CALL RUN_Q
 
        LD A,3
 
        LD (FIRS+3),A
 
        LD HL,V65
 
        LD (VV),HL
 
        LD HL,0
 
        LD (FT2),HL
 
        LD (FT2+4),HL
 
        LD (FT2+8),HL
 
        LD HL,PET
 
        LD A,(HL)
 
        CP 14
 
        RET NZ
 
        LD (HL),12
 
        RET 
 
 
 
;Фекла просит книгу
 
SC37    LD A,24
 
        CALL RUN_Q
 
        LD A,4
 
        LD (BUK),A
 
        INC A
 
        LD (FEK),A
 
        RET 
 
 
 
;Буквин дает книгу
 
SC38    LD A,25
 
        CALL RUN_Q
 
        LD A,3
 
        LD (BUK),A
 
        LD A,7+13
 
        JP SC4B
 
 
 
;Буквину можно давать деньги
 
SC39    LD HL,#1005
 
        LD (BK),HL
 
        LD A,8
 
        LD (BUK),A
 
        RET 
 
 
 
;Фекла дает чеснок
 
SC40    LD A,26
 
        CALL RUN_Q
 
        LD A,4
 
        LD (FEK),A
 
        LD A,7+14
 
        JP SC4B
 
 
 
;Мажемся чесноком (летучие мыши исчезают)
 
SC41    LD A,27
 
        CALL RUN_Q
 
 
 
        LD HL,#001F    ;аним. группа исчезн.
 
 
 
        LD DE,MASSIVE+748
 
        LD A,(DE)
 
        AND A
 
        JR Z,$+7
 
        XOR A
 
        LD (DE),A
 
        LD (MAP+1496),HL
 
 
 
        LD DE,MASSIVE+819
 
        LD A,(DE)
 
        AND A
 
        JR Z,$+7
 
        XOR A
 
        LD (DE),A
 
        LD (MAP+1638),HL
 
 
 
        LD DE,MASSIVE+628
 
        LD A,(DE)
 
        AND A
 
        JR Z,$+7
 
        XOR A
 
        LD (DE),A
 
        LD (MAP+1256),HL
 
 
 
        LD DE,MASSIVE+502
 
        LD A,(DE)
 
        AND A
 
        JR Z,SC41_
 
        XOR A
 
        LD (DE),A
 
        LD (MAP+1004),HL
 
 
 
SC41_   LD HL,SPR
 
        LD (UNDR),HL
 
        LD (INVT2+4),A ;A=0
 
        JP SC4B
 
 
 
;Душим мышь
 
SC42    LD A,27
 
        CALL RUN_Q
 
        LD HL,(ADRSPRT)
 
        LD DE,(ADRELM)
 
        XOR A
 
        LD (INVT2+4),A
 
        LD (DE),A
 
        LD (HL),#1F
 
        INC HL
 
        LD (HL),A
 
        LD HL,SPR
 
        LD (UNDR),HL
 
        RET 
 
 
 
;Даем зубы Хевору
 
SC43    CALL SC0
 
        XOR A
 
        JP SC4B
 
 
 
;Зловет колдует 1-й раз
 
SC44    LD A,28
 
        CALL RUN_Q
 
        LD A,6
 
        LD (FEK),A
 
        LD H,1           ;номер колдовства
 
 
 
        LD A,3
 
 
 
        LD DE,SC44_
 
SC441   LD BC,6000
 
        LD (ZLO),A
 
        LD A,H
 
        LD (QUEST+43),A  ;Обозначаем номер колдовства
 
        CALL INSERT
 
 
 
;Когда что-то даем Зловету
 
SC442
 
        LD HL,RNDTB1
 
        CALL RND2
 
        AND 15
 
        ADD A,A
 
        LD E,A
 
        LD D,0
 
        ADD HL,DE
 
        LD A,(HL)   ;Y
 
        INC HL
 
        LD L,(HL)   ;X
 
        LD H,A
 
 
 
        LD E,L
 
        LD D,H
 
 
 
        RLC L,L
 
        SRL H
 
        RR L
 
        SRL H
 
        RR L
 
        LD A,MASSIVE/256
 
        ADD A,H
 
        LD H,A
 
 
 
        LD A,(HL)
 
        AND A
 
        JR NZ,SC442
 
 
 
        LD (HEROCRD),DE
 
        CALL CENTR2
 
        LD A,1
 
        JR SC44_2
 
 
 
;Зловет колдует 2-й раз
 
SC45    LD HL,MAG1
 
        LD (curmagic),hl;(MG1+1),HL
 
        LD H,2      ;номер колдовства
 
        LD A,4
 
        LD DE,SC45_
 
        JR SC441
 
 
 
;выключ. колдовство 1,2,3
 
SC45_
 
        LD HL,reter;MAG2-1
 
        LD (curmagic),hl;(MG1+1),HL
 
;выключ. колдовство 1
 
SC44_   XOR A
 
        LD (QUEST+43),A  ;Обозначаем колдовство
 
SC44_2  LD (P3p1),A      ;колдовство первое
 
        RET 
 
 
 
;Зловет колдует 3-й раз
 
SC46    LD HL,MAG2
 
        LD (curmagic),hl;(MG1+1),HL
 
        LD BC,15000
 
        LD DE,SC45_
 
        LD H,3
 
        LD A,5
 
        JR SC441+3
 
 
 
;Фекла говорит о таракане и ягодах
 
SC47    LD A,29
 
        CALL RUN_Q
 
        LD A,10
 
        LD (ZAD),A
 
        LD A,6
 
        LD (ALE),A
 
        LD A,5
 
        LD (FEK),A
 
        RET 
 
 
 
;Кузнец дает таракана
 
SC48    LD A,30
 
        CALL RUN_Q
 
        LD A,3
 
        LD (ZAD),A
 
        LD A,7+27
 
        JP SC4B
 
 
 
;Аленушка просит веревку
 
SC49    LD A,5
 
        LD (ALE),A
 
        LD DE,VEREV
 
        JP INSERT-3
 
 
 
;Появление веревки
 
VEREV   LD DE,v6+4
 
        LD HL,SPR+((150+6)*32)
 
        JP FADE
 
 
 
;Становимся невидимым от зелья
 
SC50    LD A,33
 
        CALL RUN_Q
 
;Изменяем процедуру печати героя
 
;будет ходить силуэт героя
 
        XOR A
 
        LD (NEV1),A
 
        LD (NEV2),A
 
        LD (NEV3),A
 
        LD HL,#0202
 
        LD (FTZL),HL ;можно применять магнит
 
 
 
;разговоры изменяем
 
 
 
;L-текущ. диалог
 
;H-текущ. диалог на ненужную вещь
 
 
 
        LD HL,#0706
 
        LD (ZLO),HL
 
        LD (BUK),HL
 
        LD HL,#0D0C
 
        LD (ZAD),HL
 
        LD HL,#0907
 
        LD (FEK),HL
 
        INC L
 
        LD (ALE),HL
 
        LD HL,#0F0D
 
        LD (HEV),HL
 
        LD HL,#1211
 
        LD (PET),HL
 
        JP SC4B
 
 
 
;Хевор говорит сжечь Зловета
 
SC51    LD A,37
 
        CALL RUN_Q
 
        LD A,8
 
        LD (HEV),A
 
;Горит ли костер?
 
        LD A,(QUEST+40)
 
        AND A
 
        RET NZ
 
        LD A,14
 
        LD (PET),A
 
        RET 
 
 
 
;Отнимаем посох
 
SC52    LD A,34
 
        CALL RUN_Q
 
        LD BC,500   ;10 сек
 
        LD DE,SC52_
 
       CALL INSERT
 
        LD HL,SPR+((150+19)*32);посох
 
        LD DE,SPR+6944
 
        LD BC,SPR+6976
 
SC521   LD (MAP+624),HL
 
        LD (MAP+626),DE
 
        LD (MAP+754),BC
 
        LD A,1
 
        LD (REMAP+1),A
 
        RET 
 
 
 
;Зловет забирает посох обратно
 
SC52_   LD A,(MASSIVE+312)
 
        AND A
 
        RET Z   ;посох уже взяли
 
        XOR A
 
        LD (QUEST+34),A
 
        LD HL,SPR
 
        LD DE,SPR+6880
 
        LD BC,SPR+6912
 
        JR SC521
 
 
 
;Уменьшаем Зловета
 
SC53    LD A,35
 
        CALL RUN_Q
 
 
 
        XOR A
 
        LD (INVT2+4),A
 
        LD (INVT3+4),A
 
        LD (MASSIVE+313),A
 
 
 
        LD HL,#001F    ;аним. группа исчезновения
 
        LD (MAP+626),HL
 
        LD L,#21       ;еще одна группа
 
        LD (MAP+754),HL
 
 
 
        LD HL,SPR
 
        LD (UNDR),HL
 
        LD HL,SPR+(159*32)
 
        LD (UNDR2),HL
 
 
 
        LD A,3
 
        LD (RUMB+3),A  ;оживляем дом Зловета
 
        LD DE,ZELYE
 
        JP INSERT-3
 
 
 
;зелье видимости
 
ZELYE   LD DE,v24+4
 
        LD HL,SPR+((150+24)*32)
 
        JP FADE
 
 
 
;Становимся видимым от зелья
 
SC54    CALL SC55
 
        JP SC4B
 
 
 
;Становимся видимым от посоха
 
SC55    LD A,36
 
        CALL RUN_Q
 
;Изменяем печать спрайта героя
 
        LD A,#AA    ;XOR D
 
        LD (NEV1),A
 
        LD A,#AC    ;XOR H
 
        LD (NEV2),A
 
        LD A,#AD    ;XOR L
 
        LD (NEV3),A
 
 
 
;разговоры изменяем
 
 
 
;L-текущ. диалог
 
;H-текущ. диалог на ненужную вещь
 
 
 
        LD HL,#0003
 
        LD (BUK),HL
 
        LD (ZAD),HL
 
        LD L,5
 
        LD (FEK),HL
 
        LD (ALE),HL
 
        LD L,12
 
        LD (PET),HL
 
 
 
        LD A,(QUEST+41) ;сгорел ли Зловет?
 
        AND A
 
        JR Z,$+4
 
        LD L,16
 
        LD (HEV),HL
 
 
 
        LD HL,#0908
 
        LD (ZLO),HL
 
 
 
;больше не применять посох и зелье
 
        XOR A
 
        LD (v19),A
 
        LD (v24),A
 
        RET 
 
 
 
;Горит ли костер?
 
SC56    LD A,(QUEST+40)
 
        AND A
 
        RET NZ
 
        JP SC11_
 
 
 
;Сжигаем Зловета, появляется колокол
 
SC57    LD A,41
 
        CALL RUN_Q
 
 
 
        LD A,(QUEST+36) ;Видим ли герой?
 
        JR Z,SC571
 
 
 
        LD A,16
 
        LD (HEV),A
 
 
 
SC571   LD A,SPR/256
 
        LD DE,122
 
        LD HL,MAP+372
 
 
 
        LD C,3
 
        LD B,3
 
SC57_   LD (HL),D ;0
 
        INC HL
 
        LD (HL),A
 
        INC HL
 
        DJNZ SC57_
 
        ADD HL,DE
 
        DEC C
 
        JR NZ,SC57_-2
 
 
 
        XOR A
 
        LD HL,MASSIVE+186
 
        LD E,61
 
SC572_  LD C,3
 
        LD B,3
 
        LD (HL),A ;0
 
        INC L
 
        DJNZ $-2
 
        ADD HL,DE
 
        DEC C
 
        JR NZ,SC572_+2
 
 
 
        INC A
 
        LD (MASSIVE+186+65),A
 
 
 
        LD HL,MAP+502   ;ложим колокол
 
        LD (HL),D ;0
 
        INC HL
 
        LD (HL),#D5
 
        XOR A
 
        JP SC4B
 
 
 
;Можно ли лететь на метле
 
SC58    LD B,31
 
        LD HL,(HEROCRD)
 
        LD A,H ;Y
 
        CP 53
 
        JR C,SC58_
 
        LD A,L ;X
 
        CP 21
 
        JR C,SC58_
 
        CP 35
 
        JR NC,SC58_
 
        LD B,3
 
SC58_   LD A,B
 
        RET 
 
 
 
;Появление Глеба
 
SC59    LD A,4
 
        LD HL,#0001
 
SC59_   LD (HEV),A
 
        LD DE,#0204
 
;      LD A,6
 
        LD (MAP+58+1792),HL
 
        LD H,D
 
        LD (MAP+60+1792),HL
 
        LD H,E
 
        LD (MAP+58+1920),HL
 
;      LD H,A
 
        LD H,6
 
        LD (MAP+60+1920),HL
 
;Обнуление кармана
 
SC64    XOR A
 
        JP SC4B
 
 
 
;Исчезание Глеба
 
SC60    LD A,42
 
        CALL RUN_Q
 
        LD HL,0
 
        LD (MASSIVE+925),HL
 
        LD (MASSIVE+989),HL
 
        LD L,#1B
 
        LD A,5
 
        JR SC59_
 
 
 
;Кузнец просит курить
 
SC61    LD A,3
 
        LD (ZAD),A
 
        LD HL,#230A
 
        LD (ZD),HL
 
        RET 
 
        
 
;Конец игры
 
SC62    XOR A
 
        LD (END_G_1),A
 
        JP SC4B
 
 
 
;Фекла дает зубы
 
SC63    CALL SC0
 
        LD A,7+34
 
        JP SC4B
 
 
 
;Проверка видимы ли мы для Хевора?
 
SC65    LD C,15
 
        LD A,(QUEST+33)
 
        LD B,A
 
        LD A,(QUEST+36)
 
        XOR B
 
        RET Z
 
        LD B,C
 
        JP SC30_
 
 
 
;Для Фёклы
 
SC66    LD C,9
 
        JR SC65+2
 
 
 
;Видели ли/говорили с Глебом?
 
SC67    LD A,(LEO1+4)
 
        LD HL,#C582  ;адрес реплики,если не видели Глеба
 
        AND A
 
        RET Z
 
        LD HL,#CC68  ;если видели, но не говорили
 
        RET 
 
 
 
;Адреса скриптов
 
SCRPTB
 
        DW SC0,SC1,SC2,SC3,SC4,SC5,SC6
 
        DW SC7,SC8,SC9,SC10,SC11,SC12,SC13
 
        DW SC14,SC15,SC16,SC17,SC18,SC19
 
        DW SC20,SC21,SC22,SC23,SC24,SC25
 
        DW SC26,SC27,SC28,SC29,SC30,SC31
 
        DW SC32,SC33,SC34,SC35,SC36,SC37
 
        DW SC38,SC39,SC40,SC41,SC42,SC43
 
        DW SC44,SC45,SC46,SC47,SC48,SC49
 
        DW SC50,SC51,SC52,SC53,SC54,SC55
 
        DW SC56,SC57,SC58,SC59,SC60,SC61
 
        DW SC62,SC63,SC64,SC65,SC66,SC67
 
 
 
;Воспроизведение звуков
 
SOUND
 
        NOP    ;SFX (0-ON, 201-OFF)
 
        INC H
 
        DEC H
 
        RET Z
 
        LD BC,#FFFD
 
        LD A,2   ;Плавная установка высоты тона канала B (0-255)
 
        OUT (C),A
 
        LD B,#BF
 
        LD A,(HL)
 
        OUT (C),A
 
        INC HL
 
        LD B,#FF
 
        LD A,3   ;Грубая установка высоты тона канала B (0-255)
 
        OUT (C),A
 
        LD B,#BF
 
        LD A,(HL)
 
        OUT (C),A
 
        LD B,#FF
 
        LD A,7         ;Управление каналами.
 
        OUT (C),A      ;Биты (0 в бите означает,
 
                       ;что функция разрешена):
 
                       ;  ШУМ
 
        INC HL         ;00CBACBA
 
        IN A,(C)       ;     ТОН
 
        AND %11101101
 
        OR (HL)
 
        LD B,#BF
 
        OUT (C),A
 
        INC HL
 
        LD A,9         ;Амплитуда канала B (0-15)
 
        LD B,#FF
 
        OUT (C),A
 
        LD B,#BF
 
        LD A,(HL)
 
        OUT (C),A      ;Записываем амплитуду в регистр муз.проц.
 
        INC HL
 
        LD (SAMPLE+1),HL ;Адрес следующего кванта
 
        LD A,(HL)
 
        OR A
 
        RET NZ
 
AY_OFF
 
        LD (SAMPLE+2),A
 
 
 
;       NOP ;RET ;Если музыка играет, то глушить канал не надо
 
 
 
;Делаем аплитуду канала B равной нулю
 
 
 
        LD BC,#FFFD
 
        LD A,9
 
        OUT (C),A
 
        XOR A
 
        LD B,#BF
 
        OUT (C),A
 
        RET 
 
 
 
;Формат звуков:
 
;Первое число - плавная высота тона
 
;Второе       - грубая высота тона
 
;Третье       - управление каналом:
 
;             = 16 - запрещение шума в канале
 
;             = 2  - запрещение тона в канале
 
;             = 18 - запрещение шум + тон
 
;             = 0  - шум и тон разрешены
 
;Четвертое    - громкость канала (0-15)
 
;Числа пропускать нельзя!
 
;Звук всегда должен оканчиваться нулем!
 
 
 
;взятие/выкладывание
 
SND_TK
 
        DB 1,0,2,15
 
        DB 1,0,2,12
 
        DB 1,0,2,10
 
        DB 1,0,2,8
 
        DB 1,0,2,6
 
        DB 1,0,2,8
 
        DB 1,0,2,10
 
        DB 1,0,2,12
 
        DB 1,0,2,15
 
        DB 1,0,2,12
 
        DB 1,0,2,10
 
        DB 1,0,2,8
 
        DB 1,0,2,6
 
        DB 1,0,2,4
 
        DB 1,0,2,2
 
        DB 0
 
 
 
;Применение вещи на герое
 
SND_HR
 
        DB 40,0,16,15
 
        DB 35,0,16,13
 
        DB 20,0,16,7
 
        DB 10,0,16,2
 
        DB 20,0,16,7
 
        DB 35,0,16,13
 
        DB 40,0,16,15
 
        DB 35,0,16,13
 
        DB 20,0,16,7
 
        DB 10,0,16,2
 
        DB 20,0,16,7
 
        DB 35,0,16,13
 
        DB 40,0,16,15
 
        DB 35,0,16,13
 
        DB 20,0,16,7
 
        DB 10,0,16,2
 
        DB 0,0,18,0
 
        DB 0
 
 
 
;Продолжение диалога (листание)
 
SND_NXT
 
        DB 100,0,16,15
 
        DB 90,0,16,14
 
        DB 60,0,16,10
 
        DB 50,0,16,8
 
        DB 30,0,16,6
 
        DB 10,0,16,4
 
        DB 5,0,16,2
 
        DB 0
 
 
 
;Применение вещи на объекте
 
SND_OBJ
 
        DB 100,0,16,15
 
        DB 95,0,16,14
 
        DB 85,0,16,12
 
        DB 60,0,16,10
 
        DB 50,0,16,8
 
        DB 30,0,16,6
 
        DB 10,0,16,4
 
 
 
        DB 200,0,16,15
 
        DB 160,0,16,14
 
        DB 130,0,16,13
 
        DB 95,0,16,11
 
        DB 93,0,16,10
 
        DB 90,0,16,9
 
        DB 85,0,16,7
 
        DB 80,0,16,6
 
        DB 40,0,16,2
 
        DB 0
 
 
 
;Завершение диалога
 
SND_END
 
        DB 30,0,0,15
 
        DB 20,0,0,14
 
        DB 1,0,2,13
 
        DB 1,0,2,10
 
        DB 1,0,2,8
 
        DB 1,0,2,5
 
        DB 0
 
 
 
;Появление вещи/выполнение таска
 
SND_TSK
 
        DB 50,0,16,15
 
        DB 45,0,16,14
 
        DB 43,0,16,12
 
        DB 40,0,16,10
 
 
 
        DB 70,0,16,15
 
        DB 65,0,16,14
 
        DB 63,0,16,12
 
        DB 60,0,16,10
 
 
 
        DB 57,0,16,15
 
        DB 55,0,16,13
 
        DB 53,0,16,13
 
        DB 50,0,16,10
 
        DB 35,0,16,14
 
        DB 17,0,16,13
 
        DB 15,0,16,9
 
        DB 15,0,16,8
 
        DB 0
 
 
 
;Листание вещей в мешке
 
SND_LST
 
        DB 200,0,16,15
 
        DB 150,0,16,15
 
        DB 100,0,16,15
 
        DB 95,0,16,14
 
        DB 93,0,16,12
 
        DB 90,0,16,10
 
        DB 80,0,16,10
 
        DB 70,0,16,10
 
        DB 40,0,16,10
 
        DB 0
 
 
 
;ICQ sound (rmx by Bulba)
 
;Начало разговора/отдача вещи
 
SND_SPK
 
        DB #94,0,0,#C
 
        DB #94,0,16,#F
 
        DB #94,0,16,12
 
        DB #94,0,16,9
 
        DB #94,0,16,2
 
        DB #94,0,16,1
 
        DB #94,0,16,0
 
        DB #94,0,16,0
 
        DB #BA,0,16,9
 
        DB #BA,0,16,#C
 
        DB #BA,0,16,#F
 
        DB #BA,0,16,#E
 
        DB #BA,0,16,#D
 
        DB #BA,0,16,#C
 
        DB #BA,0,16,#C
 
        DB #BA,0,16,#C
 
        DB #BA,0,16,#B
 
        DB #BA,0,16,#B
 
        DB #BA,0,16,#B
 
        DB #BA,0,16,#A
 
        DB #BA,0,16,9
 
        DB #BA,0,16,9
 
SND     DB 0
 
 
 
;Инициализация переменных игры
 
INIGAME
 
       if 1==0 ;мы это держим в VARS
 
        LD A,(QUEST+43)
 
        EXA 
 
        CALL SC45_;Обнуляем колдовство
 
        EXA 
 
        LD B,1
 
        AND A
 
        JR Z,ING0 ;Зловет не колдовал
 
        DEC A
 
        JR Z,INGA ;колдовал 1-й раз
 
        DEC B     ;B=0
 
        DEC A
 
        LD HL,MAG1
 
        JR Z,INGB ;2-й раз
 
        LD HL,MAG2;3-й
 
INGB    LD (curmagic),hl;(MG1+1),HL
 
INGA    LD A,B
 
        LD (P3p1),A
 
       endif
 
 
 
ING0    LD HL,#AAAC
 
        LD B,#AD
 
        LD A,(QUEST+36)
 
        AND A
 
        JR NZ,ING1 ;герой видим
 
        LD A,(QUEST+33)
 
        AND A
 
        JR Z,ING1  ;герой видим
 
 
 
;Герой невидим
 
        LD HL,0
 
        LD B,H
 
 
 
ING1    LD A,H      ;XOR D
 
        LD (NEV1),A
 
        LD A,L      ;XOR H
 
        LD (NEV2),A
 
        LD A,B      ;XOR L
 
        LD (NEV3),A
 
 
 
        LD HL,MESHOK
 
        LD (MSTRT+2),HL
 
        LD HL,Right
 
        LD (SPRHERO+1),HL
 
        XOR A
 
        LD (TILED+1),A
 
        LD (CCURS+1),A
 
        INC A
 
        LD (END_G_1),A
 
        LD (INV+1),A
 
        INC A
 
        LD (ROTATE+1),A
 
        LD (Prev+1),A
 
        EXA 
 
        CALL SPRHERO
 
        CALL EndStep+1
 
 
 
;Центровка героя на экране
 
CENTR
 
HALFV   EQU SCRWD/4
 
HALFG   EQU SCRHG/4
 
 
 
        LD A,(HERO2p1)   ;мигает ли герой
 
        AND A
 
        RET NZ
 
CENTR2  LD A,(RunHero+1) ;идет ли герой
 
        AND A
 
        RET NZ
 
       if EGA
 
       ld a,3 ;3,2 - печатаем, 1 - не печатаем (кроме как под героем)
 
       endif
 
        LD (MAPFLAG+1),A ;обновить экран
 
        LD HL,(HEROCRD) ;H-Y, L-X
 
        LD BC,0
 
        LD A,L
 
        CP HALFV
 
        JR C,C2
 
C1      CP (63-HALFV)
 
        LD C,64-(HALFV*2)
 
        JR NC,C2
 
        SUB HALFV
 
        LD C,A
 
 
 
C2      LD A,H
 
        CP HALFG
 
        JR C,C4
 
C3      CP (63-HALFG)
 
        LD B,64-(HALFG*2)
 
        JR NC,C4
 
        SUB HALFG
 
        LD B,A
 
C4      LD (DispMapX),BC ;H-Y, L-X
 
        LD A,H
 
        SUB B
 
        LD H,A
 
        LD A,L
 
        SUB C
 
        LD L,A
 
        CALL Abs_Pix+3
 
        LD (CrdHero+1),HL
 
 
 
;Мигание героя
 
C5      LD A,COUNT
 
        LD (HERO2p1),A
 
        LD HL,HERO2
 
        LD (CLR_MAPm2),HL
 
 
 
        LD HL,SND_HR
 
        LD (SAMPLE+1),HL
 
        RET