;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