/* 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_) 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); } } }