scummvm/engines/mortevielle/mor.h
2012-04-06 08:18:12 +02:00

1458 lines
26 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* Niveau 14 suite */
const char m1[] = "quelqu'un entre, parait tonn mais ne dit rien";
void testfi()
{
if (ioresult!= 0)
{
caff= do_alert(err_mess,1);
exit(0);
}
}
integer readclock()
{
registres r;
integer s, m, h;
/* debug('readclock');*/
integer readclock_result;
r.ax = 0x2c00;
intr(0x21,r);
{
h=(cardinal)r.cx >> 8;
m=r.cx % 256;
s=(cardinal)r.dx >> 8;
}
m= m * 60;
h= h* 3600;
readclock_result= h+ m+ s;
return readclock_result;
}
void modif(integer& nu)
{
/* debug('modif'); */
if (nu== 26) nu= 25;
if ((nu> 29) && (nu< 36)) nu= nu- 4;
if ((nu> 69) && (nu< 78)) nu= nu- 37;
if ((nu> 99) && (nu< 194)) nu= nu- 59;
if ((nu> 996) && (nu< 1000)) nu= nu- 862;
if ((nu> 1500) && (nu< 1507)) nu= nu- 1363;
if ((nu> 1507) && (nu< 1513)) nu= nu- 1364;
if ((nu> 1999) && (nu< 2002)) nu= nu- 1851;
if (nu== 2010) nu= 151;
if ((nu> 2011) && (nu< 2025)) nu= nu- 1860;
if (nu== 2026) nu= 165;
if ((nu> 2029) && (nu< 2037)) nu= nu- 1864;
if ((nu> 3000) && (nu< 3005)) nu= nu- 2828;
if (nu== 4100) nu= 177;
if (nu== 4150) nu= 178;
if ((nu> 4151) && (nu< 4156)) nu= nu- 3973;
if (nu== 4157) nu= 183;
if ((nu== 4160) || (nu== 4161)) nu= nu- 3976;
}
void dessine(integer ad, integer x, integer y)
{
/* debug('dessine'); */
hide_mouse();
writepal(numpal);
pictout(ad,0,x,y);
show_mouse();
}
void dessine_rouleau()
{
/* debug('dessine_rouleau'); */
writepal(89);
if (gd==her)
{
mem[0x7000+14]=15;
}
hide_mouse();
pictout(0x73a2,0,0,0);
show_mouse();
}
void text_color(integer c)
{
color_txt= c;
}
/* NIVEAU 13 */
void text1(integer x,integer y,integer nb,integer m)
{
phrase st;
integer tay;
integer co;
/* debug('text'); */
if (res==1) co=10; else co=6;
deline(m,st,tay);
if ((y==182) && (tay*co>nb*6)) y=176;
afftex(st,x,y,nb,20,color_txt);
}
void initouv()
{
integer cx;
/* debug('initouv'); */
for( cx= 1; cx <= 7; cx ++) touv[cx]= chr(0);
}
void ecrf1()
{
boite(0, 11, 512, 163, 15); /* grand dessin */
}
void clsf1()
{
integer i,j;
/* debug('clsf1'); */
hide_mouse();
box(0,gd, 0,11, 514,175, 255);
/* if Gd=ams then port[$3DD]:=15;
case Gd of
ams,
cga : begin
for j:=0 to 63 do
begin
for i:=6 to 86 do
begin
mem[$B800:i*80+j]:=0;
mem[$Ba00:i*80+j]:=0;
end;
mem[$b800:6960+j]:=0;
mem[$ba00:400+j]:=0;
end;
end;
ega : begin
port[$3C4]:= 2;
port[$3C5]:= 15;
port[$3CE]:= 8;
port[$3CF]:= 255;
for j:=0 to 63 do
for i:=11 to 174 do
mem[$A000:i*80+j]:=0;
end;
tan : begin
for j:=0 to 128 do
begin
for i:=3 to 43 do
begin
mem[$B800:i*160+j]:=0;
mem[$Ba00:i*160+j]:=0;
mem[$bc00:i*160+j]:=0;
if i<>43 then mem[$be00:i*160+j]:=0;
end;
mem[$be00:320+j]:=0;
end;
end;
end;
droite(256*res,11,256*res,175,0);*/
show_mouse();
}
void clsf2()
{
integer i,j;
/* debug('clsf2'); */
hide_mouse();
if (f2_all)
{
box(0,gd,1,176,633,199,255);
boite(0,175,634,24,15);
f2_all=false;
}
else
{
box(0,gd,1,176,633,190,255);
boite(0,175,634,15,15);
}
show_mouse();
}
void ecrf2()
{
/* debug('ecrf2'); */
text_color(5);
/*boite(0,175,630,15,15);*/
}
void ecr2(str255 str_)
{
integer tab;
integer tlig;
/* debug('ecr2 : '+str_);*/
if (res==1) tab=10; else tab=6;
putxy(8,177);
tlig=59+pred(integer,res)*36;
if (length(str_)<tlig) writeg(str_,5);
else if (length(str_)<(tlig << 1))
{
putxy(8,176);
writeg(copy(str_,1,pred(integer,tlig)),5);
putxy(8,182);
writeg(copy(str_,tlig,tlig << 1),5);
}
else {
f2_all=true;
clsf2();
putxy(8,176);
writeg(copy(str_,1,pred(integer,tlig)),5);
putxy(8,182);
writeg(copy(str_,tlig,pred(integer,tlig << 1)),5);
putxy(8,190);
writeg(copy(str_,tlig << 1,tlig*3),5);
}
}
void clsf3()
{
integer i,j;
/* debug('clsf3'); */
hide_mouse();
box(0,gd,1,192,633,199,255);
boite(0,191,634,8,15);
show_mouse();
}
void ecr3(str255 text)
{
/* debug('ecr3 : '+text);*/
clsf3();
putxy(8,192);
writeg(text,5);
}
void ecrf6()
{
/* debug('ecrf6'); */
text_color(5);
boite(62, 33, 363, 80, 15);
}
void ecrf7()
{
text_color(4);
/* draw_mode(2);
text_height(4*res);
text_style(normal);*/
}
void clsf10()
{
integer co,cod;
varying_string<8> st;
/* debug('clsf10'); */
hide_mouse();
if (res==1)
{
co=634;
cod=534;
}
else
{
co=600;
cod=544;
}
box(15,gd, cod, 93, co, 98, 255);
if (s.conf< 33) st="Cool";
else
if (s.conf< 66) st=" Lourde ";
else
if (s.conf> 65) st="Malsaine";
if (res==1) co=10; else co=6;
co= 574-((cardinal)co*length(st) >> 1);
putxy(co,92);
writeg(st,4);
if (res==1) co=620; else co=584;
box(15,gd, 560, 24, co, 86, 255);
/* rempli(69,12,32,5,255);*/
show_mouse();
}
void stop()
{
clrscr;
hirs();
gd=ams;
hirs();
exit(0);
}
void paint_rect(integer x, integer y, integer dx, integer dy)
{
integer co;
/* debug('paint_rect'); */
if (gd==cga) co= 3;
else co=11;
box(co,gd,x,y,x+dx,y+dy,255);
}
integer hazard(integer min,integer max)
{
integer ha1;
real ha2;
/* debug('hazard'); */
integer hazard_result;
ha2= Random();
ha1= trunc(ha2*(max-min));
hazard_result= min+ ha1;
return hazard_result;
}
void calch(integer& j,integer& h,integer& m)
{
integer th,nh;
/* debug('calch');*/
nh= readclock();
th= jh+ ((nh- mh) / t);
m= ((th % 2)+ vm)* 30;
h= ((cardinal)th >> 1)+ vh;
if (m== 60)
{
m= 0;
h= h+ 1;
}
j= (h / 24)+ vj;
h= h- ((j- vj)* 24);
}
void conv(integer x, integer& y)
{
integer cx;
/* debug('conv'); */
cx= 1;
y= 128;
while (cx< x)
{
y= (cardinal)y >> 1;
cx= succ(integer,cx);
}
}
/* NIVEAU 12 */
void okpas()
{
tesok=true;
}
void modobj(integer m)
{
phrase str_;
str30 strp;
integer i,tay;
/* debug('modobj'); */
strp=' ';
if (m!= 500)
{
deline(m- 501+ c_st41,str_,tay);
strp= delig;
}
menut( invt[8], strp);
menu_disable( invt[8]);
}
void modobj2(integer m,boolean t1,boolean t2)
{
phrase str_;
str30 strp;
integer i,tay;
/* debug('modobj'); */
strp=' ';
if (t1 || t2) okpas();
else tesok=false;;
if (m!= 500)
{
deline(m- 501+ c_st41,str_,tay);
strp= delig;
}
menut( invt[8], strp);
menu_disable( invt[8]);
}
void repon(integer f,integer m)
{
str255 str_;
varying_string<40> str1;
phrase st;
text1 fic;
integer i, xco, dx, caspe, tay;
/* debug('repon fenetre nø'+chr(f+48));*/
if ((m> 499) && (m< 563))
{
deline( m-501+c_st41,st,tay);
if (tay>((58+pred(integer,res)*37) << 1)) f2_all= true;
else f2_all= false;
clsf2();
afftex(st,8,176,85,3,5);
}
else
{
modif(m);
if (f== 8) f= 2;
if (f== 1) f= 6;
if (f== 2)
{
clsf2();
ecrf2();
text1(8, 182, 103, m);
if ((m== 68) || (m== 69)) s.teauto[40]= '*';
if ((m== 104) && (caff== 14))
{
s.teauto[36]= '*';
if (s.teauto[39]== '*')
{
s.pourc[3]= '*';
s.teauto[38]= '*';
}
}
}
if (set::of(6,9, eos).has(f))
{
deline(m,st,tay);
if (f==6) i=4;
else i=5;
afftex(st,80,40,60,25,i);
if (m== 180) s.pourc[6]= '*';
if (m== 179) s.pourc[10]= '*';
}
if (f== 7) /* messint */
{
ecrf7();
deline(m,st,tay);
if (res==1)
{
xco=252-tay*5;
caspe= 100;
dx= 80;
}
else
{
xco=252-tay*3;
caspe= 144;
dx=50;
}
if (tay<40) afftex(st,xco,86,dx,3,5);
else afftex(st,caspe,86,dx,3,5);
}
}
}
void f3f8()
{
integer co;
if (res==1) co=107; else co=64;
putxy(3,44);
writeg(f3,5);
ywhere= 51;
writeg(f8,5);
boite(0,42,co,16,7);
}
void t5(integer cx)
{
/* debug('t5'); */
if (cx== 10) blo= false;
if (cx!= 1)
{
bh1= false;
bf1= false;
}
if (cx!= 2) bh2= false;
if (cx!= 4)
{
bh4= false;
bf4= false;
}
if (cx!= 5) bh5= false;
if (cx!= 6) bh6= false;
if (cx!= 8) bh8= false;
if (cx!= 3) bt3= false;
if (cx!= 7) bt7= false;
if (cx!= 9) bh9= false;
}
void affper(integer per)
{
integer cx;
/* debug('affper'); */
for( cx= 1; cx <= 8; cx ++) menu_disable( disc[cx]);
clsf10();
if ((per & 128)== 128)
{
putxy(560,24);
writeg("LEO",4);
menu_enable( disc[1]);
}
if ((per & 64)== 64)
{
putxy(560, 32);
writeg("PAT",4);
menu_enable( disc[2]);
}
if ((per & 32)== 32)
{
putxy(560, 40);
writeg("GUY",4);
menu_enable( disc[3]);
}
if ((per & 16)== 16)
{
putxy(560,48);
writeg("EVA",4);
menu_enable( disc[4]);
}
if ((per & 8)== 8)
{
putxy(560,56);
writeg("BOB",4);
menu_enable( disc[5]);
}
if ((per & 4)== 4)
{
putxy(560, 64);
writeg("LUC",4);
menu_enable( disc[6]);
}
if ((per & 2)== 2)
{
putxy(560, 72);
writeg("IDA",4);
menu_enable( disc[7]);
}
if ((per & 1)== 1)
{
putxy(560, 80);
writeg("MAX",4);
menu_enable( disc[8]);
}
ipers= per;
}
/* overlay */ void choix(integer min,integer max, integer& per)
{
boolean i;
integer haz,cx,cy,cz;
long_integer per2,cz2;
/* debug('o0 choix'); */
haz= hazard(min,max);
if (haz> 4)
{
haz= 8- haz;
i= true;
}
else i= false;
cx= 0;
per= 0;
while (cx< haz)
{
cy= hazard(1,8);
conv(cy,cz);
if ((per & cz)!= cz)
{
cx= cx+ 1;
per= (per | cz);
}
}
if (i) per= 255- per;
i= false;
}
/* overlay */ void cpl1(integer& p)
{
integer j,h,m;
/* debug('o0 cpl1'); */
calch(j,h,m);
if ((h> 7) || (h< 11)) p= 25;
if ((h> 10) && (h< 14)) p= 35;
if ((h> 13) && (h< 16)) p= 50;
if ((h> 15) && (h< 18)) p= 5;
if ((h> 17) && (h< 22)) p= 35;
if ((h> 21) && (h< 24)) p= 50;
if ((h>= 0) && (h< 8)) p= 70;
mdn();
}
/* overlay */ void cpl2(integer& p)
{
integer j,h,m;
/* debug('o0 cpl2'); */
calch(j,h,m);
if ((h> 7) && (h< 11)) p= -2;
if (h== 11) p= 100;
if ((h> 11) && (h< 23)) p= 10;
if (h== 23) p= 20;
if ((h>= 0) && (h< 8)) p= 50;
}
/* overlay */ void cpl3(integer& p)
{
integer j,h,m;
/* debug('o0 cpl3'); */
calch(j,h,m);
if (((h> 8) && (h< 10)) || ((h> 19) && (h< 24))) p= 34;
if (((h> 9) && (h< 20)) || ((h>= 0) && (h< 9))) p= 0;
}
/* overlay */ void cpl5(integer& p)
{
integer j,h,m;
/* debug('o0 cpl5'); */
calch(j,h,m);
if ((h> 6) && (h< 10)) p= 0;
if (h== 10) p= 100;
if ((h> 10) && (h< 24)) p= 15;
if ((h>= 0) && (h< 7)) p= 50;
}
/* overlay */ void cpl6(integer& p)
{
integer j,h,m;
/* debug('o0 cpl6'); */
calch(j,h,m);
if (((h> 7) && (h< 13)) || ((h> 17) && (h< 20))) p= -2;
if (((h> 12) && (h< 17)) || ((h> 19) && (h< 24))) p= 35;
if (h== 17) p= 100;
if ((h>= 0) && (h< 8)) p= 60;
}
void person()
{
const char m1[] = "Vous";
const char m2[] = "ˆtes";
const char m3[] = "SEUL";
integer cf;
str255 str_;
/* debug('person'); */
for( cf= 1; cf <= 8; cf ++) menu_disable( disc[cf]);
clsf10();
putxy(560, 30);
writeg(m1,4);
putxy(560, 50);
writeg(m2,4);
putxy(560, 70);
writeg(m3,4);
ipers= 0;
}
void chlm(integer& per)
{
/* debug('chlm'); */
per= hazard(1,2);
if (per== 2) per= 128;
}
void pendule()
{
const matrix<1,2,1,12,integer> cv
= {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}},
{{-5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} }};
const integer x = 580;
const integer y = 123;
const integer rg = 9;
integer h,co;
/* debug('pendule'); */
hide_mouse();
/*paint_rect(572,114,18,20);
paint_rect(577,114,6,20);*/
paint_rect(570,118,20,10);
paint_rect(578,114,6,18);
if (set::of(cga,her, eos).has(gd)) co=0; else co=1;
if (min== 0) droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y- rg), co);
else droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y+ rg), co);
h= heu;
if (h> 12) h= h- 12;
if (h== 0) h= 12;
droite(((cardinal)x >> 1)*res, y, ((cardinal)(x+ cv[1][h]) >> 1)*res, y+ cv[2][h], co);
show_mouse();
putxy( 568, 154);
if (heu> 11) writeg( "PM ",1);
else writeg( "AM ",1);
putxy( 550, 160);
if (set::of(range(0,8), eos).has(jou)) writeg(string(chr(jou+49))+"& jour",1);
}
/*************
* NIVEAU 11 *
*************/
void debloc(integer l)
{
/* debug('debloc'); */
num= 0;
x= 0;
y= 0;
if ((l!= 26) && (l!= 15)) t5(l);
mpers= ipers;
}
/* overlay */ void cpl10(integer& p,integer& h)
{
integer j,m;
/* debug('o1 cpl10'); */
calch(j,h,m);
if (((h> 7) && (h< 11)) || ((h> 11) && (h< 14))
|| ((h> 18) && (h< 21))) p= 100;
if ((h== 11) || ((h> 20) && (h< 24))) p= 45;
if (((h> 13) && (h< 17)) || (h== 18)) p= 35;
if (h== 17) p= 60;
if ((h>= 0) && (h< 8)) p= 5;
}
/* overlay */ void cpl11(integer& p,integer& h)
{
integer j,m;
/* debug('o1 cpl11'); */
calch(j,h,m);
if (((h> 8) && (h< 12)) || ((h> 20) && (h< 24))) p= 25;
if (((h> 11) && (h< 14)) || ((h> 18) && (h< 21))) p= 5;
if ((h> 13) && (h< 17)) p= 55;
if ((h> 16) && (h< 19)) p= 45;
if ((h>= 0) && (h< 9)) p= 0;
}
/* overlay */ void cpl12(integer& p)
{
integer j,h,m;
/* debug('o1 cpl12'); */
calch(j,h,m);
if (((h> 8) && (h< 15)) || ((h> 16) && (h< 22))) p= 55;
if (((h> 14) && (h< 17)) || ((h> 21) && (h< 24))) p= 25;
if ((h>= 0) && (h< 5)) p= 0;
if ((h> 4) && (h< 9)) p= 15;
}
/* overlay */ void cpl13(integer& p)
{
/* debug('o1 cpl13'); */
p= 0;
}
/* overlay */ void cpl15(integer& p)
{
integer j,h,m;
/* debug('o1 cpl15'); */
calch(j,h,m);
if ((h> 7) && (h< 12)) p= 25;
if ((h> 11) && (h< 14)) p= 0;
if ((h> 13) && (h< 18)) p= 10;
if ((h> 17) && (h< 20)) p= 55;
if ((h> 19) && (h< 22)) p= 5;
if ((h> 21) && (h< 24)) p= 15;
if ((h>= 0) && (h< 8)) p= -15;
}
/* overlay */ void cpl20(integer& p,integer& h)
{
integer j,m;
/* debug('o1 cpl20'); */
calch(j,h,m);
if (h== 10) p= 65;
if ((h> 10) && (h< 21)) p= 5;
if ((h> 20) && (h< 24)) p= -15;
if ((h>= 0) && (h< 5)) p= -300;
if ((h> 4) && (h< 10)) p= -5;
}
/* overlay */ void quelq1(integer l)
{
integer per;
/* debug('o1 quelq1'); */
per= hazard(1,2);
if (l== 1)
if (per== 1) bh1= true; else bf1= true;
if (l== 4)
if (per== 1) bh4= true; else bf4= true;
ipers= 10;
}
/* overlay */ void quelq2()
{
/* debug('o1 quelq2'); */
if (li== 2) bh2= true; else bh9= true;
ipers= 10;
}
/* overlay */ void quelq5()
{
/* debug('o1 quelq5'); */
bh5= true;
ipers= 10;
}
/* overlay */ void quelq6(integer l)
{
integer per;
/* debug('o1 quelq6'); */
if (l== 6) bh6= true;
if (l== 8) bh8= true;
ipers= 10;
}
/* overlay */ void quelq10(integer h, integer& per)
{
integer min,max;
/* debug('o1 quelq10'); */
if ((h>= 0) && (h< 8)) chlm(per); else
{
if ((h> 7) && (h< 10))
{
min= 5;
max= 7;
}
if ((h> 9) && (h< 12))
{
min= 1;
max= 4;
}
if (((h> 11) && (h< 15)) || ((h> 18) && (h< 21)))
{
min= 6;
max= 8;
}
if (((h> 14) && (h< 19)) || ((h> 20) && (h< 24)))
{
min= 1;
max= 5;
}
choix(min,max,per);
}
affper(per);
}
/* overlay */ void quelq11(integer h, integer& per)
{
integer min,max;
/* debug('o1 quelq11'); */
if ((h>= 0) && (h< 8)) chlm(per); else
{
if (((h> 7) && (h< 10)) || ((h>20) && (h< 24)))
{
min= 1;
max= 3;
}
if (((h> 9) && (h< 12)) || ((h> 13) && (h< 19)))
{
min= 1;
max= 4;
}
if (((h> 11) && (h< 14)) || ((h> 18) && (h< 21)))
{
min= 1;
max= 2;
}
choix(min,max,per);
}
affper(per);
}
/* overlay */ void quelq12(integer& per)
{
/* debug('o1 quelq12'); */
chlm(per);
affper(per);
}
/* overlay */ void quelq15(integer& per)
{
integer cx;
boolean test;
/* debug('o1 quelq15'); */
per= 0;
if (per== 0)
{
do {
cx= hazard(1,8);
test =(((cx== 1) && (bh2 || bh9)) ||
((cx== 2) && bh8) ||
((cx== 3) && bh4) ||
((cx== 4) && bf4) ||
((cx== 5) && bh6) ||
((cx== 6) && bh1) ||
((cx== 7) && bf1) ||
((cx== 8) && bh5));
} while (!(! test));
conv(cx,per);
affper(per);
}
}
/* overlay */ void quelq20(integer h, integer& per)
{
integer min,max;
/* debug('o1 quelq20'); */
if (((h>= 0) && (h< 10)) || ((h> 18) && (h< 24))) chlm(per);
else
{
if ((h> 9) && (h< 12))
{
min= 3;
max= 7;
}
if ((h> 11) && (h< 18))
{
min= 1;
max= 2;
}
if (h== 18)
{
min= 2;
max= 4;
}
choix(min,max,per);
}
affper(per);
}
/* overlay */void frap()
{
integer j,h,m,haz;
/* debug('o1 frap'); */
calch(j,h,m);
if ((h>= 0) && (h< 8)) crep= 190; else
{
haz= hazard(1,100);
if (haz> 70) crep= 190; else crep= 147;
}
}
/* overlay */ void nouvp(integer l, integer& p)
{
/* debug('o1 nouvp'); */
p= 0;
if (l== 1)
{
if (bh1) p= 4;
if (bf1) p= 2;
}
if (((l== 2) && (bh2)) || ((l== 9) && (bh9))) p= 128;
if (l== 4)
{
if (bh4) p= 32;
if (bf4) p= 16;
}
if ((l== 5) && (bh5)) p= 1;
if ((l== 6) && (bh6)) p= 8;
if ((l== 8) && (bh8)) p= 64;
if (((l== 3) && (bt3)) || ((l== 7) && (bt7))) p= 9;
if (p!= 9) affper(p);
}
/* overlay */ void tip(integer ip, integer& cx)
{
/* debug('o1 tip'); */
if (ip== 128) cx= 1; else
if (ip== 64) cx= 2; else
if (ip== 32) cx= 3; else
if (ip== 16) cx= 4; else
if (ip== 8) cx= 5; else
if (ip== 4) cx= 6; else
if (ip== 2) cx= 7; else
if (ip== 1) cx= 8;
}
/* overlay */ void ecfren(integer& p,integer& haz, integer cf,integer l)
{
/* debug('o1 ecfren'); */
if (l== 0) person();
p= -500;
haz= 0;
if (((l== 1) && (! bh1) && (! bf1))
|| ((l== 4) && (! bh4) && (! bf4))) cpl1(p);
if ((l== 2) && (! bh2) && (! bh9)) cpl2(p);
if (((l== 3) && (! bt3)) || ((l== 7) && (! bt7))) cpl3(p);
if ((l== 5) && (! bh5)) cpl5(p);
if (((l== 6) && (! bh6)) || ((l== 8) && (! bh8))) cpl6(p);
if ((l== 9) && (! bh9) && (! bh2)) p= 10;
if (((l== 2) && (bh9)) || ((l== 9) && (bh2))) p= -400;
if (p!= -500)
{
p= p+ cf;
haz= hazard(1,100);
}
}
/* overlay */ void becfren(integer l)
{
integer haz;
/* debug('o1 becfren'); */
if ((l== 1) || (l== 4))
{
haz= hazard(1,2);
if (l== 1)
if (haz== 1) bh1= true; else bf1= true;
if (l== 4)
if (haz== 1) bh4= true; else bf4= true;
}
if (l== 2) bh2= true; else
if (l== 3) bt3= true; else
if (l== 5) bh5= true; else
if (l== 6) bh6= true; else
if (l== 7) bt7= true; else
if (l== 8) bh8= true; else
if (l== 9) bh9= true;
}
/* NIVEAU 10 */
void init_nbrepm()
{
const array<1,8,byte> ipm
= {{4,5,6,7,5,6,5,8}};
integer i;
/* debug('init_nbrepm'); */
i= 0;
do {
i= succ(integer,i);
nbrepm[i]= ipm[i];
} while (!(i==8));
}
void phaz(integer& haz,integer& p, integer cf)
{
/* debug('phaz'); */
p= p+ cf;
haz= hazard(1,100);
}
/* overlay */ void inzon()
{
integer cx;
/* debug('o2 inzon'); */
copcha();
{
s.ipre = false;
s.derobj= 0;
s.icave = 0;
s.iboul = 0;
s.ibag = 0;
s.ipuit = 0;
s.ivier = 0;
s.iloic = 136;
s.icryp = 141;
s.conf = hazard(4,10);
s.mlieu = 21;
for( cx= 2; cx <= 6; cx ++) s.sjer[cx]= chr(0);
s.sjer[1]= chr(113);
s.heure= chr(20);
for( cx= 1; cx <= 10; cx ++) s.pourc[cx]= ' ';
for( cx= 1; cx <= 6; cx ++) s.teauto[cx]= '*';
for( cx= 7; cx <= 9; cx ++) s.teauto[cx]= ' ';
for( cx= 10; cx <= 28; cx ++) s.teauto[cx]= '*';
for( cx= 29; cx <= 42; cx ++) s.teauto[cx]= ' ';
s.teauto[33]= '*';
}
for( cx= 1; cx <= 8; cx ++) nbrep[cx]= 0;
init_nbrepm();
}
/* overlay */ void dprog()
{
/* debug('o2 dprog'); */
li= 21;
/* jh:= t_settime(0);*/
jh= 0;
if (! s.ipre) blo= true;
t= ti1;
mh= readclock();
}
/* overlay */ void pl1(integer cf)
{
integer p, haz;
/* debug('o2 pl1'); */
if (((li== 1) && (! bh1) && (! bf1))
|| ((li== 4) && (! bh4) && (! bf4)))
{
cpl1(p);
phaz(haz,p,cf);
if (haz> p) person(); else quelq1(li);
}
}
/* overlay */ void pl2(integer cf)
{
integer p,haz;
/* debug('o2 pl2'); */
if (! bh2)
{
cpl2(p);
phaz(haz,p,cf);
if (haz> p) person(); else quelq2();
}
}
/* overlay */ void pl5(integer cf)
{
integer p,haz;
/* debug('o2 pl5'); */
if (! bh5)
{
cpl5(p);
phaz(haz,p,cf);
if (haz> p) person(); else quelq5();
}
}
/* overlay */ void pl6(integer cf)
{
integer p,haz;
/* debug('o2 pl6'); */
if (((li== 6) && (! bh6)) || ((li== 8) && (! bh8)))
{
cpl6(p);
phaz(haz,p,cf);
if (haz> p) person(); else quelq6(li);
}
}
/* overlayi */ void pl9(integer cf)
{
integer p,haz;
/* debug('o2 pl9'); */
if (! bh9)
{
cf= -10;
phaz(haz,p,cf);
if (haz> p) person(); else quelq2();
}
}
/* overlayi */ void pl10(integer cf)
{
integer p,h,haz;
/* debug('o2 pl10'); */
cpl10(p,h);
phaz(haz,p,cf);
if (haz> p) person(); else quelq10(h,p);
}
/* overlay */ void pl11(integer cf)
{
integer p,h,haz;
/* debug('o2 pl11'); */
cpl11(p,h);
phaz(haz,p,cf);
if (haz> p) person(); else quelq11(h,p);
}
/* overlay */ void pl12(integer cf)
{
integer p,haz;
/* debug('o2 pl12'); */
cpl12(p);
phaz(haz,p,cf);
if (haz> p) person(); else quelq12(p);
}
/* overlay */ void pl13(integer cf)
{
integer p,haz;
/* debug('o2 pl13'); */
cpl13(p);
phaz(haz,p,cf);
if (haz> p) person(); else quelq12(p);
}
/* overlay */ void pl15(integer cf)
{
integer p,haz;
/* debug('o2 pl15'); */
cpl15(p);
phaz(haz,p,cf);
if (haz> p) person(); else quelq15(p);
}
/* overlay */ void pl20(integer cf)
{
integer p,h,haz;
/* debug('o2 pl20'); */
cpl20(p,h);
phaz(haz,p,cf);
if (haz> p) person(); else quelq20(h,p);
}
/* overlay */ void t11(integer l11, integer& a)
{
integer p,haz,h;
/* debug('o2 t11'); */
ecfren(p,haz,s.conf,l11);
li= l11;
if ((l11> 0) && (l11< 10))
if (p!= -500)
{
if (haz> p)
{
person();
a= 0;
}
else
{
becfren(li);
nouvp(li,a);
}
}
else nouvp(li,a);
if (l11> 9)
if ((l11> 15) && (l11!= 20) && (l11!= 26)) person(); else
{
if (l11== 10) cpl10(p,h);
if (l11== 11) cpl11(p,h);
if (l11== 12) cpl12(p);
if ((l11== 13) || (l11== 14)) cpl13(p);
if ((l11== 15) || (l11== 26)) cpl15(p);
if (l11== 20) cpl20(p,h);
p= p+ s.conf;
haz= hazard(1,100);
if (haz> p)
{
person();
a= 0;
}
else
{
if (l11== 10) quelq10(h,p);
if (l11== 11) quelq11(h,p);
if ((l11== 12) || (l11== 13) || (l11== 14)) quelq12(p);
if ((l11== 15) || (l11== 26)) quelq15(p);
if (l11== 20) quelq20(h,p);
a= p;
}
}
}
/* overlay */ void cavegre()
{
integer haz;
/* debug('cavegre'); */
s.conf= s.conf+ 2;
if (s.conf> 69) s.conf= s.conf+ (s.conf / 10);
clsf3();
ecrf2();
ecr3(m1);
haz= (hazard(0, 4))- 2;
parole(2, haz, 1);
for( haz=0; haz <= 3000; haz ++);
clsf3();
person();
}
void writetp(str255 s,integer t)
{
if (res==2) writeg(s,t);
else writeg(copy(s,1,25),t);
}
void messint(integer nu)
{
/* debug('messint'); */
clsf1();
clsf2();
clsf3();
decomp( 0x73a2, 1008);
memw[0x7413+12]= 80;
memw[0x7413+14]= 40;
writepal(90);
afff(gd,0x73a2, 1008,0,0);
afff(gd,0x73a2, 1008,0,70);
repon(7,nu);
}
void aniof(integer ouf,integer num)
{
integer ad, offset;
char c;
/* debug('aniof'); */
if ((caff== 7) && ((num== 4) || (num== 5))) return;
if ((caff== 10) && (num== 7)) num= 6;
if (caff== 12) if (num== 3) num= 4;
else if (num== 4) num= 3;
ad= adani;
offset= animof(ouf,num);
decomp(ad,offset);
hide_mouse();
afff(gd,ad,offset,0,12);
ecrf1();
show_mouse();
}
void musique(integer so)
{
boolean i;
integer haz;
/* dep: array[1..5] of long_integer;*/
/* debug('musique'); */
if (so== 0) /*musik(0)*/ {; }
else
if ((prebru== 0) && (! s.ipre))
{
parole(10, 1, 1);
prebru= prebru+ 1;
}
else
{
i= false;
if ((s.mlieu== 19) || (s.mlieu== 21) || (s.mlieu== 22))
{
haz= hazard(1,3);
if (haz== 2)
{
haz= hazard(2,4);
parole(9,haz,1);
i= true;
}
}
if (s.mlieu== 20)
{
haz= hazard(1,2);
if (haz== 1)
{
parole(8,1,1);
i= true;
}
}
if (s.mlieu== 24)
{
haz= hazard(1,2);
if (haz== 2)
{
parole(12,1,1);
i= true;
}
}
if (s.mlieu== 23)
{
parole(13,1,1);
i= true;
}
if (! i)
{
/* dep[1]:= 1416;
dep[2]:= 1512;
dep[3]:= 1692;
dep[4]:= 1884;
dep[5]:= 2046;
haz:= hazard(1,5);
musik(dep[haz]);*/
haz= hazard(1,17);
parole(haz,1,2);
}
}
}
/* NIVEAU 9 */
void dessin(integer ad)
{
integer cx;
/* debug('dessin'); */
if (ad!= 0) dessine(ades,((ad % 160)* 2),(ad / 160));
else
{
clsf1();
if (caff> 99)
{
dessine(ades,60,33);
boite(118, 32, 291, 121, 15); /* cadre moyen */
}
else
if (caff> 69)
{
dessine(ades,112,48); /* tˆtes */
boite(222, 47, 155, 91, 15);
}
else
{
dessine(ades,0,12);
ecrf1();
if ((caff< 30) || (caff> 32))
{
for( cx= 1; cx <= 6; cx ++)
if (ord(touv[cx])!= 0) aniof(1,ord(touv[cx]));
if (caff== 13)
{
if (s.iboul== 141) aniof(1,7);
if (s.ibag== 159) aniof(1,6);
}
if ((caff== 14) && (s.icave== 151)) aniof(1,2);
if ((caff== 17) && (s.ivier== 143)) aniof(1,1);
if ((caff== 24) && (s.ipuit!= 0)) aniof(1,1);
}
if (caff< 26) musique(1);
}
}
}