aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle/mor2.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mortevielle/mor2.h')
-rw-r--r--engines/mortevielle/mor2.h764
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);
+}