diff options
Diffstat (limited to 'engines/mortevielle/mor2.h')
-rw-r--r-- | engines/mortevielle/mor2.h | 764 |
1 files changed, 764 insertions, 0 deletions
diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h new file mode 100644 index 0000000000..8edf601458 --- /dev/null +++ b/engines/mortevielle/mor2.h @@ -0,0 +1,764 @@ +const array<1,11,integer> men + = {{ scacher, attacher, defoncer, dormir, + entrer, fermer, frapper, manger, + mettre, ouvrir, sortir }}; + +void tinke() +{ + const char m1[] = "Mince! Vous entendez du bruit..."; + const char d1[] = " | Vous devriez avoir remarqu‚| "; + const char d2[] = "% des indices..."; + const char d3 = '['; + const char d4 = ']'; + const char d5 = '1'; + const char d6[] = "OK"; + integer cx,cy,haz,nh,cf,j,h,m,cd; + varying_string<3> stpo; + boolean am; + + anyone= false; + calch(j,h,m); + if (j!= jou) + { + jou= j; + cx=0; + do { + cx=cx+1; + if (nbrepm[cx]!= 0) nbrepm[cx]= nbrepm[cx]- 1; + nbrep[cx]= 0; + } while (!(cx==8)); + } + if ((h> heu) || ((h== 0) && (heu== 23))) + { + heu= h; + min= 0; + pendule(); + cf= 0; + for( cx= 1; cx <= 10; cx ++) if (s.pourc[cx]== '*') cf= cf+ 1; + if (cf==10) stpo="10"; + else stpo=chr(cf+48); + stpou= string(d3)+ d5+ d4+ d3+ d1+ stpo+ '0'+ d2+ d4+ d3+ d6+ d4; + } + if (m> min) + { + min= 30; + pendule(); + } + if (y_s<12) return; + if (! blo) + { + if ((h== 12) || ((h> 18) && (h< 21)) || ((h>= 0) && (h< 7))) + t= ti2; else t= ti1; + cf= s.conf; + if ((cf> 33) && (cf< 66)) t= t- (t / 3); + if (cf> 65) t= t- ((t / 3)* 2); + nh= readclock(); + if ((nh- mh)> t) + { + am= active_menu; + erase_menu(); + jh= jh+ ((nh- mh)/ t); + mh= nh; + switch (li) { + case 1:case 4 : pl1(cf); break; + case 2 : pl2(cf); break; + case 5 : pl5(cf); break; + case 6:case 8 : pl6(cf); break; + case 9 : pl9(cf); break; + case 10 : pl10(cf); break; + case 11 : pl11(cf); break; + case 12 : pl12(cf); break; + case 13:case 14 : pl13(cf); break; + case 15:case 26 : pl15(cf); break; + case 20 : pl20(cf); break; + } + if ((mpers!= 0) && (ipers!= 10)) mpers= ipers; + if ((mpers== 0) && (ipers> 0)) + if ((s.mlieu== 13) || (s.mlieu== 14)) cavegre(); else + if (ipers== 10) + { + ipers= 0; + if (! brt) + { + brt= true; + hdb= readclock(); + haz= hazard(1,5); + if (haz< 5) + { + clsf3(); + ecrf2(); + ecr3(m1); + haz= (hazard(0, 4))- 2; + parole(1, haz, 1); + clsf3(); + } + } + } + if (am) draw_menu(); + } + } + hfb= readclock(); + if ((brt) && ((hfb- hdb)> 17)) + { + nouvp(li,cx); + brt= false; + hdb= 0; + if ((s.mlieu> 0) && (s.mlieu< 10)) anyone= true; + } +} + +void fenat(char ans) +{ + integer coul; + + hide_mouse(); + if (gd==cga) coul=2; + else if (gd==her) coul=1; else coul=12; + affcar(gd,306,193,coul,ord(ans)); + boite(300, 191, 16, 8, 15); + show_mouse(); +} + + +/* NIVEAU 8 */ +void afdes(integer ad) +{ + taffich(); + dessin(ad); + okdes= false; +} + +void tkey1(boolean d) +{ + boolean quest; + integer x,y,c; + integer key; + + hide_mouse(); + fenat('K'); + while (keypressed()) key=testou(); + do { + if (d) tinke(); + quest=keypressed(); + read_pos_mouse(x,y,c); + } while (!(quest || (c!=0) || (d && anyone))); + if (quest) key=testou(); + clic=false; + show_mouse(); +} + +void tmlieu(integer mli) +{ + integer cx, j, i, tail; + str30 nomp; + phrase st; + + + if (mli== 26) mli= 15; + i=1; + while ((i<8) && (v_lieu[i][mli]!=0)) + { + cx=v_lieu[i][mli]; + deline(cx+c_tmlieu,st,tail); + nomp= delig; + while (length(nomp)<30) nomp=nomp+' '; + menut( depl[i], nomp); + i=i+1; + } + nomp= "* "; + for( cx= 7; cx >= i; cx --) menut( depl[cx], nomp); +} + + +/* NIVEAU 7 */ +void tlu(integer af,integer ob) +{ + caff= 32; + afdes(0); + repon(6,ob+ 4000); + repon(2,999); + tkey1(true); + caff= af; + msg[3]= no_choice; + crep= 998; +} + +void delin(integer n) + { + phrase s; + integer t; + + deline(n,s,t); + } + +void affrep() +{ + caff= s.mlieu; + crep= s.mlieu; +} + +void mfouen() + +{ + integer cx; + + tmlieu(s.mlieu); + for( cx=1; cx <= 11; cx ++) menu_enable( men[cx]); +/* menu_enable( scacher); + menu_enable(menup, attacher); + menu_enable(menup, defoncer); + menu_enable(menup, dormir); + menu_enable(menup, entrer); + menu_enable(menup, fermer); + menu_enable(menup, frapper); + menu_enable(menup, manger); + menu_enable(menup, mettre); + menu_enable(menup, ouvrir); + menu_enable(menup, sortir); */ + menut( sonder, " sonder "); + menut( soulever, " soulever "); +} + +void atf3f8(integer& key) + { + do { + key= testou(); + } while (!((key==61) || (key==66))); + } + +/* NIVEAU 6 */ + +void tperd() +{ + integer cx; + + initouv(); + ment= 0; + iouv= 0; + mchai= 0; + mfouen(); + if (! blo) t11(21, cx); + perdu= true; + clsf1(); + boite( 60, 35, 400, 50, 15); + repon(9,crep); + clsf2(); + clsf3(); + col= false; + syn= false; + okdes= false; +} + +void tsort() +{ + integer cx; + + if ((iouv> 0) && (s.mlieu!= 0)) + if (s.conf< 50) s.conf= s.conf+ 2; + else s.conf= s.conf+ (s.conf / 10); + for( cx= 1; cx <= 7; cx ++) touv[cx]= chr(0); + ment= 0; + iouv= 0; + mchai= 0; + debloc(s.mlieu); +} + +void st4(integer ob) +{ + crep= 997; + switch (ob) { + case 114 : crep=109; break; + case 110 : crep=107; break; + case 158 : crep=113; break; + case RANGE_5(152,156):case 150: + case 100:case 157:case 160:case 161 : tlu(caff,ob); + break; + } +} + +void cherjer(integer ob, boolean& d) +{ + integer cx; + + d= false; + for( cx= 1; cx <= 6; cx ++) d=(d || (ord(s.sjer[cx])== ob)); + if (s.derobj== ob) d= true; +} + +void st1sama() +{ + s.mlieu= 10; + affrep(); +} + +void modinv() +{ + integer cx, cy, tay, i, r; + phrase nom; + str30 nomp; + + cy= 0; + for( cx=1; cx <= 6; cx ++) + if (s.sjer[cx]!= chr(0)) + { + cy= succ(integer,cy); + r= (ord(s.sjer[cx])+ 400); + deline(r-501+c_st41,nom,tay); + nomp= delig; + menut( invt[cy], nomp); + menu_enable( invt[cx]); + } + if (cy<6) + for( cx=cy+1; cx <= 6; cx ++) + { + menut( invt[cx], " "); + menu_disable( invt[cx]); + } +} + +void sparl(long_integer adr, long_integer rep) +{ + const array<1,8,integer> haut + = {{0,1,-3,6,-2,2,7,-1}}; + integer key, ad, tay, repint; + phrase st; + + repint=trunc(rep); + hide_mouse(); + deline( repint+c_paroles,st,tay); + afftex(st,230,4,65,24,5); + f3f8(); + /*boite(43,30,90,19,15); + gotoxy(7,5); + write('F3: Encore'); + gotoxy(7,6); + write('F8: Stop');*/ + key= 0; + do { + parole(repint, haut[caff- 69], 0); + atf3f8(key); + } while (!(key== 66)); + hirs(); + show_mouse(); +} + +void finfouil() + { + fouil= false; + obpart= false; + cs= 0; + is= 0; + mfouen(); + } + +void mfoudi() +{ + integer cx; + + for( cx= 1; cx <= 7; cx ++) menu_disable( depl[cx]); + for( cx=1; cx <= 11; cx ++) menu_disable( men[cx]); +/* menu_disable(menup, scacher); + menu_disable(menup, attacher); + menu_disable(menup, defoncer); + menu_disable(menup, dormir); + menu_disable(menup, entrer); + menu_disable(menup, fermer); + menu_disable(menup, frapper); + menu_disable(menup, manger); + menu_disable(menup, mettre); + menu_disable(menup, ouvrir); + menu_disable(menup, sortir); */ + menut( sonder, " -SUITE- "); + menut( soulever, " -STOP- "); +} + +void mennor() +{ + menu_up(msg[3]); +} + +void premtet() +{ + dessine(ades, 10, 80); + boite(18, 79, 155, 91, 15); +} + +/* NIVEAU 5 */ +void ajchai() +{ + integer cx,cy,lderobj; + + + cy= (acha+ pred(integer,pred(integer,mchai)* 10)); + cx= 0; + do { + cx= cx+ 1; + } while (!((cx> 9) || (tabdon[cy+ cx]== 0))); + if (tabdon[cy+ cx]== 0) + { + lderobj= s.derobj; + tabdon[cy+ cx]=lderobj; + } + else crep= 192; +} + +void ajjer(integer ob) +{ + integer cx; + + cx= 0; + do { + cx= cx+ 1; + } while (!((cx> 5) || (ord(s.sjer[cx])== 0))); + if (ord(s.sjer[cx])== 0) + { + s.sjer[(cx)]= chr(ob); + modinv(); + } + else crep= 139; +} + +void t1sama() /* On entre dans le manoir */ +{ + integer j,h,m; + boolean d; + + calch(j,h,m); + if ((h< 5) && (s.mlieu> 18)) + { + cherjer(137,d); + if (! d) /* On n'a pas les cl‚s et il est tard */ + { + crep= 1511; + tperd(); + } + else st1sama(); + } + else + if (! s.ipre) /* c'est votre premiŠre fois ? */ + { + ipers= 255; + affper(ipers); + caff= 77; + afdes(0); + boite(223, 47, 155, 91, 15); + repon(2,33); + tkey1(false); + mennor(); + hide_mouse(); + hirs(); + premtet(); + sparl(0,140); + dessine_rouleau(); + pendule(); + show_mouse(); + s.mlieu= 0; + affrep(); + t5(10); + if (! blo) t11(0, m); + ipers= 0; + mpers= 0; + s.ipre= true; + /*chech;*/ + } + else st1sama(); +} + +void t1vier() +{ + s.mlieu= 17; + affrep(); +} + +void t1neig() +{ + inei= inei+ 1; + if (inei> 2) + { + crep= 1506; + tperd(); + } + else + { + okdes= true; + s.mlieu= 19; + affrep(); + } +} + +void t1deva() +{ + inei= 0; + s.mlieu= 21; + affrep(); +} + +void t1derr() +{ + s.mlieu = 22; + affrep(); +} + +void t1deau() +{ + crep = 1503; + tperd(); +} + +void tctrm() +{ + repon(2,(3000+ ctrm)); + ctrm= 0; +} + + +void quelquun() + +{ + integer haz,cx; + + if (imen) erase_menu(); + finfouil(); + crep= 997; +L1: + if (! cache) + { + if (crep== 997) crep= 138; + repon(2,crep); + if (crep== 138) parole(5, 2, 1); else parole(4, 4, 1); + if (iouv== 0) s.conf= s.conf+ 2; else + if (s.conf< 50) s.conf= s.conf+ 4; else + s.conf= s.conf+ (3* (s.conf / 10)); + tsort(); + tmlieu(15); + tip(ipers,cx); + caff= 69+ cx; + crep= caff; + msg[3]= discut; + msg[4]= disc[cx]; + syn= true; + col= true; + } + else + { + haz= hazard(1, 3); + if (haz== 2) + { + cache= false; + crep= 137; + goto L1; + } + else + { + repon(2, 136); + haz= (hazard(0, 4))- 2; + parole(3, haz, 1); + clsf2(); + person(); + debloc(21); + affrep(); + } + } + if (imen) draw_menu(); +} + +void tsuiv() +{ + integer cx,tbcl; + integer cl,cy; + + cy= acha+ ((mchai- 1)* 10)- 1; + cx= 0; + do { + cx= cx+ 1; + cs= cs+ 1; + cl= cy+ cs; + tbcl= tabdon[cl]; + } while (!((tbcl != 0) || (cs> 9))); + if ((tbcl != 0) && (cs< 11)) + { + is= is+ 1; + caff= tbcl; + crep= caff+ 400; + if (ipers!= 0) s.conf= s.conf+ 2; + } + else + { + affrep(); + finfouil(); + if (cx> 9) crep= 131; + } +} + +void tfleche() +{ + boolean qust; + char touch; + integer dummy,cd,xmo,ymo; + + if (num== 9999) return; + fenat(chr(152)); + rect= false; + do { + touch='\0'; + + do { + mov_mouse(qust,touch); + if (clic) rect=(x_s<256*res) && (y_s<176) && (y_s>12); + tinke(); + } while (!(qust || rect || anyone)); + + if (qust && (touch=='\103')) dummy=do_alert(stpou,1); + } while (!((touch=='\73') || ((touch== '\104') && (x!= 0) && (y!=0)) || + (anyone) || (rect))); + if (touch=='\73') iesc= true; + if (rect) + { + x=x_s; + y=y_s; + } +} + +void tcoord(integer sx) + + { + integer sy,ix,iy,cb,cy,ib; + integer a, b, atdon; + + + num= 0; + crep= 999; + a=0; + atdon=amzon+3; + cy= 0; + while (cy<caff) + { + a=a+tabdon[atdon]; + atdon=atdon+4; + cy= succ(integer,cy); + } +/* for cy:=0 to caff-1 do + a:=a+ tabdon[amzon+3+4*cy]; + b:= peek(amzon+3+4*caff); */ + b= tabdon[atdon]; + if (b== 0) goto L1; + a= a+ fleche; + cb= 0; + for( cy= 0; cy <= (sx-2); cy ++) + { + ib= (tabdon[a+cb] << 8)+ tabdon[succ(integer,a+ cb)]; + cb= cb+ (ib* 4)+ 2; + } + ib= (tabdon[a+cb] << 8)+ tabdon[succ(integer,a+ cb)]; + if (ib== 0) goto L1; + cy= 1; + do { + cb= cb+ 2; + sx= tabdon[a+ cb] * res; + sy= tabdon[succ(integer,a+ cb)]; + cb= cb+ 2; + ix= tabdon[a+ cb] * res; + iy= tabdon[succ(integer,a+ cb)]; + cy= cy+ 1; + } while (!(((x>= sx) && (x<= ix) && (y>= sy) && (y<= iy)) + || (cy> ib))); + if ((x>= sx) && (x<= ix) && (y>= sy) && (y<= iy)) + + { + num= cy- 1; + return; + } +L1: + crep= 997; + } + + +void st7(integer ob) +{ + crep= 183; + if ((ob== 116) || (ob== 144)) crep= 104; + if ((ob== 126) || (ob== 111)) crep= 108; + if (ob== 132) crep= 111; + if (ob== 142) crep= 112; + if (crep== 183) st4(ob); +} + +void treg(integer ob) +{ + integer mdes; + + mdes= caff; + caff= ob; + if (((caff> 29) && (caff< 33)) || (caff== 144) || + (caff== 147) || (caff== 149) || (msg[4]== sregarder)) + { + afdes(0); + if ((caff> 29) && (caff< 33)) repon(2,caff); else repon(2,(caff+ 400)); + tkey1(true); + caff= mdes; + msg[3]= 0; + crep= 998; + } + else + { + obpart= true; + crep= caff+ 400; + mfoudi(); + } +} + +void avpoing(integer& ob) +{ + crep= 999; + if (s.derobj!= 0) ajjer(s.derobj); + if (crep!= 139) + { + modobj(ob+ 400); + s.derobj= ob; + ob= 0; + } +} + +void rechai(integer& ch) +{ + integer cx; + + cx= s.mlieu; + if (s.mlieu== 16) cx= 14; + ch= tabdon[achai+ (cx* 7)+ pred(integer,num)]; +} + +void t23coul(integer& l) +{ + boolean d; + + cherjer(143,d); + l= 14; + if (! d) + { + crep= 1512; + tperd(); + } +} + +void maivid() +{ + s.derobj= 0; + modobj(500); +} + +void st13(integer ob) +{ + if ((ob== 114) || (ob== 116) || (ob== 126) || (ob== 132) || + (ob== 111) || (ob== 106) || (ob== 102) || (ob== 100) || + (ob== 110) || (ob== 153) || (ob== 154) || (ob== 155) || + (ob== 156) || (ob== 157) || (ob== 144) || (ob== 158) || + (ob== 150) || (ob== 152)) crep= 999; else crep= 105; +} + +void aldepl() +{ + integer dummy; + + dummy=do_alert("[1][Alors, utilisez le menu DEP...][ok]",1); +} |