home *** CD-ROM | disk | FTP | other *** search
/ ring.yamanashi.ac.jp/pub/pc/freem/action/ / action.zip / TQAP.zip / Usr / Editor.tonyu < prev    next >
Text File  |  2007-06-09  |  25KB  |  1,030 lines

  1. extends SpriteChar;
  2.  
  3. run=1;
  4. SelectMode=0;
  5. Stage;
  6. StageNow;
  7. NextStage;
  8. Sx;
  9. Sy;
  10. Pat;
  11. Door;
  12. Scroll=0;
  13. cx=0;
  14. cy=0;
  15. help_page=1;
  16. FileName=$Location.stagefile;
  17.  
  18. p=-1;
  19. x= 0;
  20. y= 0;
  21.  
  22. tile=new Array();
  23.  
  24. tile.add($pat_block+0 );
  25. tile.add($pat_block+1 );
  26. tile.add($pat_block+2 );
  27. tile.add($pat_block+13);
  28. tile.add($pat_block+14);
  29. tile.add($pat_block+5 );
  30. tile.add($pat_block+6 );
  31. tile.add($pat_block+8 );
  32. tile.add($pat_block+11);
  33. tile.add($pat_block+12);
  34. tile.add($pat_enemy+6 );
  35. tile.add($pat_enemy+7 );
  36. tile.add($pat_enemy+3 );
  37. tile.add($pat_enemy+4 );
  38. tile.add($pat_enemy+9 );
  39. tile.add($pat_enemy+12);
  40. tile.add($pat_enemy+15);
  41. tile.add($pat_enemy+18);
  42. tile.add($pat_enemy+21);
  43. tile.add($pat_enemy+0 );
  44. tile.add($pat_door+0  );
  45. tile.add($pat_door+2  );
  46. tile.add($pat_key+0   );
  47. tile.add($pat_lever+0 );
  48. tile.add($pat_lever+3 );
  49. tile.add($pat_lever+6 );
  50. tile.add($pat_lever+9 );
  51.  
  52. Sx=1;
  53. Sy=1;
  54. Pat=0;
  55.  
  56. Init();
  57.  
  58. $map.scrollTo(sx*32,sy*32);
  59.  
  60. if (StageNow==null) StageNow=loadmap(1);
  61. if (StageNow!=null) StageNow=loadmap(StageNow);
  62.  
  63. while(getkey(39)>=2){
  64.   update();
  65. }
  66.  
  67. while(1){
  68.   
  69.   if (SelectMode==0) EditMode();
  70.   if (SelectMode==1) DoorTo_Set();
  71.   
  72. }
  73.  
  74. //âZü[âu---------------------------------------------------------
  75.  
  76. function savemap(_stage,display){
  77.   
  78.   var file,stage;
  79.   var _x,_y,blockzero,block,output,addzero;
  80.   var header,footer;
  81.   var i,disp,text;
  82.   
  83.   header=new Array();
  84.   footer=new Array();
  85.   
  86.   stage=_stage;
  87.   if (_stage==null || _stage==0) stage=StageNow;
  88.   if (_stage==-1) {
  89.     stage=select_stage(1);
  90.     wait(1);
  91.   }
  92.  
  93.  
  94.   if (stage!=null && stage!=-1){
  95.     
  96.     file=new FileReader(FileName);
  97.     
  98.     while(1){
  99.       text=file.readLn();
  100.       if (text=="Stage"+ThreeDigit(stage)) break;
  101.       header.add(text);
  102.     }
  103.     while(1){
  104.       text=file.readLn();
  105.       if (text=="") break;
  106.     }
  107.     while(1){
  108.       text=file.readLn();
  109.       if (text==null) break;
  110.       footer.add(text);
  111.     }
  112.     file.close();
  113.     
  114.     blockzero=$pat_block+0;
  115.     
  116.     file=new FileWriter(FileName);
  117.     
  118.     for(i=0;i<header.size();i++){
  119.       file.writeLn(header.get(i));
  120.     }
  121.     
  122.     if (display==null) {
  123.       disp=appear(new Effect(x,y,"nowsaving"));
  124.     }
  125.     wait(1);
  126.     
  127.     
  128.     //â}âbâvÅæé½ì₧é▌
  129.     
  130.     file.writeLn("Stage"+ThreeDigit(stage));
  131.     
  132.     for (_y=1;_y<25;_y++){
  133.       for  (_x=1;_x<31;_x++){
  134.         block=$map.get(_x,_y)-blockzero;
  135.         output=output+TwoDigit(block);
  136.       }  
  137.       file.writeLn(output);
  138.       output="";
  139.     }
  140.     output="";
  141.     addzero="";
  142.     
  143.     output="Scroll:"+Scroll;
  144.     file.writeLn(output);
  145.     
  146.     //âIâuâWâFâNâgé╠Åæé½ì₧é▌
  147.     for (e in $chars){
  148.       if (e is Freeze) {
  149.         if (e.p==$pat_enemy+6 ) output="TR1";
  150.         if (e.p==$pat_enemy+7 ) output="TR2";
  151.         if (e.p==$pat_enemy+3 ) output="RTR";
  152.         if (e.p==$pat_enemy+4 ) output="RTL";
  153.         if (e.p==$pat_enemy+9 ) output="RF1";
  154.         if (e.p==$pat_enemy+12) output="HOP";
  155.         if (e.p==$pat_enemy+15) output="GST";
  156.         if (e.p==$pat_enemy+18) output="WLF";
  157.         if (e.p==$pat_enemy+21) output="BBL";
  158.         if (e.p==$pat_door+0  ) output="DOR";
  159.         if (e.p==$pat_door+2  ) output="END";
  160.         if (e.p==$pat_key+0   ) output="KEY";
  161.         if (e.p==$pat_lever+0 ) output="LV1";
  162.         if (e.p==$pat_lever+3 ) output="LV2";
  163.         if (e.p==$pat_lever+6 ) output="LV3";
  164.         if (e.p==$pat_lever+9 ) output="LV4";
  165.         
  166.         _x=(e.x-16)/32;
  167.         if (_x<10) addzero="0";
  168.         output=output+" "+addzero+_x+" ";
  169.         addzero="";
  170.         _y=(e.y-16)/32;
  171.         if (_y<10) addzero="0";
  172.         output=output+addzero+_y;
  173.         
  174.         //öαé╠ö≥é╤ɵé¬É▌ÆΦé│éΩé─éóéΩé╬ïLÿ^
  175.         if (e.next_stage!=null){
  176.           
  177.           if (e.next_stage<100) addzero="0" ;
  178.           if (e.next_stage<10 ) addzero="00";
  179.           output=output+" ST:"+addzero+e.next_stage+" ";
  180.           addzero="";
  181.           if (e.next_x<10) addzero="0" ;
  182.           output=output+addzero+e.next_x+" ";
  183.           addzero="";
  184.           if (e.next_y<10) addzero="0" ;
  185.           output=output+addzero+e.next_y+" ";
  186.           addzero="";
  187.         }
  188.         file.writeLn(output);
  189.         addzero="";
  190.       }
  191.     }
  192.     file.writeLn("");
  193.     
  194.     for(i=0;i<footer.size();i++){
  195.       file.writeLn(footer.get(i));
  196.     }
  197.     
  198.     file.close();
  199.     if (display==null) disp.die();
  200.     
  201.  
  202.     StageNow=stage;
  203.     return stage;
  204.   }
  205.  
  206.   
  207. }
  208.  
  209. //âìü[âh---------------------------------------------------------
  210.  
  211. function loadmap(_stage){
  212.   
  213.   var file,stage;
  214.   var _x,_y,blockline,block,blockzero;
  215.   var e_name,e_x,e_y,e_setpat;
  216.   var e,skip;
  217.   
  218.   e_setpat=null;
  219.   
  220.   if (_stage==null) stage=select_stage();
  221.   if (_stage!=null) stage=_stage;
  222.   if ( stage==-1) return -1;
  223.   
  224.   if (SelectMode==1){
  225.     for (e in $chars){
  226.       if (e is Freeze) {
  227.         e.visible=0;
  228.         e.setVisible(0);
  229.       }
  230.     }
  231.   }
  232.   
  233.   if (SelectMode==0){
  234.     for (e in $chars){
  235.       if (e is Freeze && e.visible==0){
  236.         e.visible=1;
  237.         e.setVisible(1);
  238.         skip=1;
  239.       }
  240.       else if (e is Freeze && e.visible==1) e.die();
  241.     }
  242.   }
  243.   
  244.   if (Stage!=null){
  245.     
  246.     file=new FileReader(FileName);
  247.     while(1){
  248.       blockline=file.readLn();
  249.       if (blockline=="Stage"+ThreeDigit(stage)) break;
  250.     }
  251.     
  252.     if (file.error()==0){
  253.       
  254.       //â}âbâvô╟é▌ì₧é▌
  255.       blockzero=$pat_block+0;
  256.       for (_y=1;_y<25;_y++){
  257.         blockline=file.readLn();
  258.         for  (_x=1;_x<31;_x++){
  259.           block=blockzero+valueOf(blockline.substring((_x-1)*2,_x*2));
  260.           $map.set(_x,_y,block);
  261.         }  
  262.       }
  263.       //âXâNâìü[âïâfü[â^
  264.       blockline=file.readLn();
  265.       Scroll=valueOf(blockline.substring(7,8));
  266.       
  267.       //ôGé╠ô╟é▌ì₧é▌
  268.       if (skip!=1){
  269.         while(1){
  270.           blockline=file.readLn();
  271.           if (blockline=="") break;
  272.           e_name=        blockline.substring(0,3) ;
  273.           e_x   =valueOf(blockline.substring(4,6));
  274.           e_y   =valueOf(blockline.substring(7,9));
  275.           if (e_name=="TR1") e_setpat=$pat_enemy+6 ;
  276.           if (e_name=="TR2") e_setpat=$pat_enemy+7;
  277.           if (e_name=="RTR") e_setpat=$pat_enemy+3;
  278.           if (e_name=="RTL") e_setpat=$pat_enemy+4;
  279.           if (e_name=="RF1") e_setpat=$pat_enemy+9;
  280.           if (e_name=="HOP") e_setpat=$pat_enemy+12;
  281.           if (e_name=="GST") e_setpat=$pat_enemy+15;
  282.           if (e_name=="WLF") e_setpat=$pat_enemy+18;
  283.           if (e_name=="BBL") e_setpat=$pat_enemy+21;
  284.           if (e_name=="DOR") e_setpat=$pat_door+0;
  285.           if (e_name=="END") e_setpat=$pat_door+2;
  286.           if (e_name=="KEY") e_setpat=$pat_key+0;
  287.           if (e_name=="LV1") e_setpat=$pat_lever+0;
  288.           if (e_name=="LV2") e_setpat=$pat_lever+3;
  289.           if (e_name=="LV3") e_setpat=$pat_lever+6;
  290.           if (e_name=="LV4") e_setpat=$pat_lever+9;
  291.           
  292.           
  293.           if (e_setpat!=null) {
  294.             e=appear(new Freeze(e_x*32+16,e_y*32+16,e_setpat));
  295.             e.visible=1;
  296.           }
  297.           
  298.           //ö≥é╤ɵô╟é▌Åoé╡
  299.           if (e_name=="DOR") {
  300.             e.next_stage=valueOf(blockline.substring(13,16));
  301.             e.next_x    =valueOf(blockline.substring(17,19));
  302.             e.next_y    =valueOf(blockline.substring(20,22));
  303.             e.visible   =1;
  304.           }
  305.         }
  306.       }
  307.       if (skip==1) skip=0;
  308.       
  309.       file.close();
  310.     }
  311.     
  312.   }
  313.   return stage;
  314. }
  315.  
  316.  
  317.  
  318. //âeâXâgâvâîâC--------------------------------------------------------
  319.  
  320. function testplay(){
  321.   
  322.   var e,e_p,new_obj,addzero;
  323.   var _x,_y,_x1,_y1,_x2,_y2;
  324.   var file;
  325.   var SetOKorNOT;
  326.   var esc;
  327.   
  328.   run=0;
  329.   e_p=null;
  330.   
  331.   savemap(StageNow);
  332.   
  333.   if (selectmode==0){
  334.  
  335.     file=new FileReader(FileName);
  336.     
  337.     while(1){
  338.       text=file.readLn();
  339.       if (text=="Stage"+ThreeDigit(StageNow)) break;
  340.     }
  341.     
  342.     if (file.error()==0){
  343.       
  344.       //â}âbâvô╟é▌ì₧é▌
  345.       blockzero=$pat_block+0;
  346.       for (_y=1;_y<25;_y++){
  347.         blockline=file.readLn();
  348.         for  (_x=1;_x<31;_x++){
  349.           block=blockzero+valueOf(blockline.substring((_x-1)*2,_x*2));
  350.           
  351.           if (block==$pat_block+13) {
  352.             $map.set(_x,_y,$pat_block+3);
  353.           }
  354.           else if (block==$pat_block+14) {
  355.             $map.set(_x,_y,$pat_block+4);
  356.           }
  357.           else {
  358.             $map.set(_x,_y,block);
  359.           }
  360.           
  361.         }  
  362.       }
  363.     }
  364.     
  365.     while(1){
  366.       
  367.       _x1=trunc($mouseX/32+sx)*32;
  368.       _y1=trunc($mouseY/32+sy)*32;
  369.       _x2=_x1+32;
  370.       _y2=_y1+32;
  371.       drawRect(_x1,_y1,_x2,_y2,$clRed);
  372.       
  373.       if (getkey(39)<=1) Sx--;
  374.       if (getkey(37)<=1) Sx++;
  375.       if (getkey(40)<=1) Sy--;
  376.       if (getkey(38)<=1) Sy++;
  377.       if (Sx<1 )  Sx=1 ;
  378.       if (Sx>16)  Sx=16;
  379.       if (Sy<1 )  Sy=1 ;
  380.       if (Sy>13)  Sy=13;
  381.       
  382.       SetOKorNOT=isblock($map.get(_x1/32,_y1/32));
  383.       
  384.       if (getkey(1)==1) {
  385.         if (SetOKorNOT==1) $mplayer.play($se_cursor00_a);
  386.         if (SetOKorNOT==0) break;
  387.       } 
  388.       if (getkey(81)==1){
  389.         wait(1);
  390.         return;
  391.       }
  392.       
  393.       esc=0;
  394.       if ($mouseX>32*10 && $mouseY<32*2) esc=320;
  395.       
  396.       $map.scrollTo(sx*32,sy*32);
  397.       
  398.       fillRect(350+sx*32,10+sy*32+esc,470+sx*32,60+sy*32+esc,color(100,0,0),1);
  399.       drawText(360+sx*32,13+sy*32+esc   ,"âeâXâgâvâîâC",$clWhite,8);
  400.       drawText(360+sx*32,13+sy*32+12+esc,"ì╢âNâèâbâNüFê╩ÆuîêÆΦ",$clWhite,8);
  401.       drawText(360+sx*32,13+sy*32+24+esc,"ü¬ü½ü⌐ü¿üFëµû╩ê┌ô«",$clWhite,8);
  402.       drawText(360+sx*32,13+sy*32+36+esc,"QüFâGâfâBâbâgé╔û▀éΘ",$clWhite,8);
  403.       update();
  404.       
  405.     }
  406.     
  407.     for (e in $chars){
  408.       if (e is Freeze) e.die();
  409.     }
  410.     
  411.     e=appear(new Mychar(_x1+16,_y1+16));
  412.     
  413.     $Location.stage=StageNow;
  414.     $Location.set_x=_x1/32;
  415.     $Location.set_y=_y1/32;
  416.     $Location.nokori=-100;
  417.     
  418.     e.scroll=Scroll;
  419.     e.pause=0;
  420.     
  421.     while(1){
  422.       blockline=file.readLn();
  423.       if (blockline=="") break;
  424.       e_name=        blockline.substring(0,3) ;
  425.       ex    =valueOf(blockline.substring(4,6));
  426.       ey    =valueOf(blockline.substring(7,9));
  427.       
  428.       //ôGé≡âZâbâg
  429.       if (e_name=="TR1") e_p=$pat_enemy+6;
  430.       if (e_name=="TR2") e_p=$pat_enemy+7;
  431.       if (e_name=="RF1") e_p=$pat_enemy+9;
  432.       if (e_name=="HOP") e_p=$pat_enemy+12;
  433.       if (e_name=="GST") e_p=$pat_enemy+15;
  434.       if (e_name=="WLF") e_p=$pat_enemy+18;
  435.       if (e_name=="BBL") e_p=$pat_enemy+21;
  436.       
  437.       if (e_p!=null)     appear(new Enemy(ex*32+16,ey*32+16,e_p));
  438.       
  439.       if (e_name=="RTR") {
  440.         e=appear(new Enemy(ex*32+16,ey*32+16,$pat_enemy+8));
  441.         e.rotate=1;
  442.       }
  443.       if (e_name=="RTL") {
  444.         e=appear(new Enemy(ex*32+16,ey*32+16,$pat_enemy+8));
  445.         e.rotate=0;
  446.       }
  447.       
  448.       //öαé≡âZâbâg
  449.       if (e_name=="DOR") {
  450.         e=appear(new Door(ex*32+16,ey*32+16,$pat_door+0));
  451.         e.next_stage=valueOf(blockline.substring(13,16));
  452.         e.next_x    =valueOf(blockline.substring(17,19));
  453.         e.next_y    =valueOf(blockline.substring(20,22));
  454.       }
  455.       
  456.       if (e_name=="END") appear(new Door(ex*32+16,ey*32+16,$pat_door+2));
  457.       
  458.       //âJâMé≡âZâbâg
  459.       if (e_name=="KEY") appear(new Key(ex*32+16,ey*32+16,$pat_key+0));
  460.       
  461.       if (e_name=="LV1") appear(new Lever(ex*32+16,ey*32+16,$pat_lever+0));
  462.       if (e_name=="LV2") appear(new Lever(ex*32+16,ey*32+16,$pat_lever+3));
  463.       if (e_name=="LV3") appear(new Lever(ex*32+16,ey*32+16,$pat_lever+6));
  464.       if (e_name=="LV4") appear(new Lever(ex*32+16,ey*32+16,$pat_lever+9));
  465.       
  466.       e_p=null;
  467.     }
  468.     run=1;
  469.     this.die();
  470.   }
  471.   
  472. }
  473.  
  474. //âGâfâBâbâg--------------------------------------------------------------
  475.  
  476. function EditMode(){
  477.   
  478.   var e,_x,_y,now_x,now_y;
  479.   var now_tile;
  480.   var x1,y1,x2,y2;
  481.   var i,flag;
  482.   var esc;
  483.   
  484.   _x1=trunc($mouseX/32+sx)*32;
  485.   _y1=trunc($mouseY/32+sy)*32;
  486.   _x2=_x1+32;
  487.   _y2=_y1+32;
  488.   drawRect(_x1,_y1,_x2,_y2,$clBlue);
  489.   
  490.   if (getkey(39)<=1) Sx--;
  491.   if (getkey(37)<=1) Sx++;
  492.   if (getkey(40)<=1) Sy--;
  493.   if (getkey(38)<=1) Sy++;
  494.   if (getkey(49 )==1) Pat--;
  495.   if (getkey(50 )==1) Pat++;
  496.   if (getkey(67 )==1) Init();
  497.   if (getkey(51 )==1) Scroll--;
  498.   if (getkey(52 )==1) Scroll++;
  499.   if (getkey(68 )==1) Pat=19;
  500.   //if (getkey(49 )==1) loadstage();
  501.   
  502.   
  503.   if (Sx<1 )  Sx=1 ;
  504.   if (Sx>16)  Sx=16;
  505.   if (Sy<1 )  Sy=1 ;
  506.   if (Sy>13)  Sy=13;
  507.   if (Pat>26) Pat=0;
  508.   if (Pat<0)  Pat=26;
  509.   if (Scroll>3) Scroll=0;
  510.   if (Scroll<0) Scroll=3;
  511.   
  512.   //â}âEâXâJü[â\âïò`ëµ
  513.   _x=trunc($mouseX/32+sx)*32+16;
  514.   _y=trunc($mouseY/32+sy)*32+16;
  515.   
  516.   now_x=trunc($mouseX/32+sx);
  517.   now_y=trunc($mouseY/32+sy);
  518.   
  519.   //ëEâNâèâbâN
  520.   if (getkey(2)==1) {
  521.     
  522.     if (getkey(16)>=1){
  523.       for (e in $chars){
  524.         if (e.x==_x && e.y==_y) {
  525.           for (i=0;i<26;i++){
  526.             if (e.p==tile.get(i)) Pat=i;
  527.           }
  528.         }
  529.       }
  530.     }
  531.     
  532.     else{
  533.       now_tile=$map.get(now_x,now_y);
  534.       for (i=0;i<26;i++){
  535.         if (now_tile==tile.get(i)) Pat=i;
  536.       }
  537.       
  538.       for (e in $chars){
  539.         if (e is Freeze && e.p==$pat_door+0 && e.x==_x && e.y==_y) {
  540.           Door=e;
  541.           SelectMode=1;
  542.         }
  543.       }
  544.     }
  545.     
  546.   }
  547.   
  548.   
  549.   //ì╢âNâèâbâN
  550.   if (getkey(1)>=1) {
  551.     if (pat< 10) $map.set($mouseX/32+sx,$mouseY/32+sy,tile.get(Pat));
  552.     if (pat>=10) {
  553.       e=appear(new Freeze(($mouseX+sx*32),($mouseY+sy*32),tile.get(Pat)));
  554.       if (e.p==$pat_lever+9 && Scroll!=0) e.die();
  555.       
  556.     }
  557.     //2é┬ê╚Åπé╠âîâoü[é¬éáé┴é╜éτÅ┴ïÄé╖éΘ
  558.     c1=0;
  559.     c2=0;
  560.     c3=0;
  561.     c4=0;
  562.     for (e in $chars){
  563.       if (e is Freeze && e.p==$pat_lever+0) c1++;
  564.       if (e is Freeze && e.p==$pat_lever+3) c2++;
  565.       if (e is Freeze && e.p==$pat_lever+6) c3++;
  566.       if (e is Freeze && e.p==$pat_lever+9) c4++;
  567.       if (c1==2 || c2==2 || c3==2 || c4==2){
  568.         e.die();
  569.         if (getkey(1)==1) $mplayer.play($se_cursor00_a);
  570.       }
  571.     }
  572.   }
  573.   
  574.   if (getkey(83)==1) savemap();
  575.   if (getkey(76)==1) {
  576.     flag=loadmap();
  577.     if (flag!=-1) StageNow=flag;
  578.   }
  579.  
  580.   if (getkey(84)==1) testplay();
  581.   if (getkey(81)==1) return_title();
  582.   if (getkey(65)==1) savemap(-1);
  583.   if (getkey(73)==1) init_save();
  584.   if (getkey(72)==1) {
  585.     appear(new Editor_Help());
  586.     for(e in $chars){
  587.       if (e is Editor_Help) break;
  588.     }
  589.     wait(1);
  590.     while(e.run==1){
  591.       update();
  592.     }
  593.   }
  594.   
  595.   if (Scroll!=0){
  596.     for(e in $chars){
  597.       if (e is Freeze && e.p==$pat_lever+9) {
  598.         e.die();
  599.         if (getkey(1)==1) $mplayer.play($se_cursor00_a);
  600.       }
  601.     }
  602.   }
  603.   
  604.   $map.scrollTo(sx*32,sy*32);
  605.   
  606.   while ($mouseX<0 || $mouseX>$screenWidth || $mouseY<0 || $mouseY>$screenHeight){
  607.     
  608.     fillRect(350+sx*32,10+sy*32,460+sx*32,50+sy*32,$clWhite,2);
  609.     drawSprite(375+sx*32,30+sy*32,tile.get(Pat),0,1);
  610.     drawText(400+sx*32,15+sy*32,"Stage: "+StageNow,$clBlack,8);
  611.     if (scroll==0) drawText(400+sx*32,25+sy*32,"Scroll: X-Y",$clBlack,8);
  612.     if (scroll==1) drawText(400+sx*32,25+sy*32,"Scroll: X",$clBlack,8);
  613.     if (scroll==2) drawText(400+sx*32,25+sy*32,"Scroll: Y",$clBlack,8);
  614.     if (scroll==3) drawText(400+sx*32,25+sy*32,"Scroll: None",$clBlack,8);
  615.     drawText(400+sx*32,35+sy*32,"X: "+now_x+" Y: "+now_y,$clBlack,8);
  616.     
  617.     fillRect(15+sx*32,360+sy*32,220+sx*32,370+sy*32,$clBlue,2);
  618.     drawText(20+sx*32,360+sy*32,"â}âEâXâJü[â\âïé≡ëµû╩ôαé╔Æuéóé─é¡é╛é│éó",$clWhite,8);
  619.     
  620.     draw_next();
  621.     update();
  622.   }
  623.   
  624.   if   ($mouseX>32*10 && $mouseY<32*2) esc=320;
  625.   else  esc=0;
  626.   
  627.   //ëEÅπâXâeü[â^âXò\Ī
  628.   fillRect  (350+sx*32,10+sy*32+esc,460+sx*32,50+sy*32+esc,$clWhite,2);
  629.   drawSprite(375+sx*32,30+sy*32+esc,tile.get(Pat),0,1);
  630.   drawText  (400+sx*32,15+sy*32+esc,"Stage: "+StageNow,$clBlack,8);
  631.   
  632.   if (scroll==0) drawText(400+sx*32,25+sy*32+esc,"Scroll: X-Y",$clBlack,8);
  633.   if (scroll==1) drawText(400+sx*32,25+sy*32+esc,"Scroll: X",$clBlack,8);
  634.   if (scroll==2) drawText(400+sx*32,25+sy*32+esc,"Scroll: Y",$clBlack,8);
  635.   if (scroll==3) drawText(400+sx*32,25+sy*32+esc,"Scroll: None",$clBlack,8);
  636.   
  637.   drawText(400+sx*32,35+sy*32+esc,"X: "+now_x+" Y: "+now_y,$clBlack,8);
  638.   
  639.   //HELPé╠ò╢ÄÜò\Ī
  640.   fillRect(15+sx*32,360+sy*32,120+sx*32,370+sy*32,$clWhite,2);
  641.   drawText(20+sx*32,360+sy*32,"égâLü[üFâwâïâvò\Ī",$clBlack,8);
  642.   
  643.   
  644.   //öαé╠ö≥é╤ɵò\Ī
  645.   draw_next();
  646.   
  647.   update();
  648. }
  649.  
  650. //öαé╠ö≥é╤ɵÉ▌ÆΦ------------------------------------------------------
  651.  
  652. function DoorTo_Set(){
  653.   
  654.   var _x1,_y1,_x2,_y2;
  655.   var _x ,_y ;
  656.   var next_stage;
  657.   var i,esc;
  658.   
  659.   for (i=0;i<50;i++){
  660.     _x=$viewX+130;
  661.     _y=$viewY+150;
  662.     fillRect(_x,_y,_x+230,_y+80,$clBlack,0);
  663.     drawText(_x+30,_y+30,"öαé╠ö≥é╤ɵé≡âZâbâgé╡é▄é╖",$clWhite,12,-1);
  664.     update();
  665.   }
  666.   
  667.   savemap(StageNow,0);
  668.   next_stage=loadmap();
  669.   
  670.   if (next_stage==-1) {
  671.     SelectMode=0;
  672.     wait(1);
  673.     return;
  674.   }
  675.   
  676.   while(1){
  677.     
  678.     _x1=trunc($mouseX/32+sx)*32;
  679.     _y1=trunc($mouseY/32+sy)*32;
  680.     _x2=_x1+32;
  681.     _y2=_y1+32;
  682.     drawRect(_x1,_y1,_x2,_y2,color(0,100,0));
  683.     
  684.     if (getkey(39)<=1) Sx--;
  685.     if (getkey(37)<=1) Sx++;
  686.     if (getkey(40)<=1) Sy--;
  687.     if (getkey(38)<=1) Sy++;
  688.     
  689.     if (Sx<1 )  Sx=1 ;
  690.     if (Sx>16)  Sx=16;
  691.     if (Sy<1 )  Sy=1 ;
  692.     if (Sy>13)  Sy=13;
  693.     
  694.     $map.scrollTo(sx*32,sy*32);
  695.     
  696.     esc=0;
  697.     if ($mouseX>32*10 && $mouseY<32*2) esc=320;
  698.     
  699.     //drawRect(_x1,_y1,_x2,_y2,color(0,100,0));
  700.     fillRect(350+sx*32,10+sy*32+esc,470+sx*32,60+sy*32+esc,color(0,100,0),1);
  701.     drawText(360+sx*32,13+sy*32+esc   ,"öαé╠ö≥é╤ɵÉ▌ÆΦ",$clWhite,8);
  702.     drawText(360+sx*32,13+sy*32+12+esc,"ì╢âNâèâbâNüFê╩ÆuîêÆΦ",$clWhite,8);
  703.     drawText(360+sx*32,13+sy*32+24+esc,"ü¬ü½ü⌐ü¿üFëµû╩ê┌ô«",$clWhite,8);
  704.     drawText(360+sx*32,13+sy*32+36+esc,"QüFâGâfâBâbâgé╔û▀éΘ",$clWhite,8);
  705.     
  706.     fillRect(15+sx*32,360+sy*32,70+sx*32,370+sy*32,color(0,100,0),2);
  707.     drawText(20+sx*32,360+sy*32,"Stage : "+next_stage,$clWhite,8);
  708.     
  709.     update();
  710.     
  711.     if (getkey(1 )==1) break;
  712.     if (getkey(81)==1) {
  713.       SelectMode=0;
  714.       wait(1);
  715.       loadmap(StageNow);
  716.       return;
  717.     }
  718.   }
  719.   
  720.   _x=trunc($mouseX/32+sx);
  721.   _y=trunc($mouseY/32+sy);
  722.   
  723.   Door.next_stage=next_stage;
  724.   Door.next_x    =_x;
  725.   Door.next_y    =_y;
  726.   
  727.   SelectMode=0;
  728.   wait(1);
  729.   
  730.   loadmap(StageNow);
  731.   
  732.   while(getkey(1)>=2){
  733.     update();
  734.   }
  735.   
  736.   savemap(StageNow);
  737.   
  738. }
  739.  
  740. function init(){
  741.   
  742.   var e;
  743.   var _x,_y;
  744.   
  745.   for (_y=0;_y<27;_y++){
  746.     for  (_x=0;_x<32;_x++){
  747.       $map.set(_x,_y,$pat_block+0);
  748.     }  
  749.   }
  750.   
  751.   for (_x=0;_x<32;_x++){
  752.     $map.set(_x,0,$pat_block+11);
  753.   }
  754.   for (_x=0;_x<32;_x++){
  755.     $map.set(_x,26,$pat_block+11);
  756.   }  
  757.   
  758.   for (_y=0;_y<27;_y++){
  759.     $map.set(0 ,_y,$pat_block+11);
  760.   } 
  761.   for (_y=0;_y<27;_y++){
  762.     $map.set(31,_y,$pat_block+11);
  763.   } 
  764.   
  765.   for (_x=1;_x<31;_x++){
  766.     $map.set(_x,25,$pat_block+1);
  767.   } 
  768.   
  769.   for (e in $chars){
  770.     if (e is Enemy)  e.die();
  771.     if (e is Freeze) e.die();
  772.     if (e is Door )  e.die();
  773.     if (e is Key  )  e.die();
  774.     if (e is Lever)  e.die();
  775.     if (e is Mychar) e.die();
  776.     if (e is Opening)e.die();
  777.     if (e is Effect) e.die();
  778.   }
  779.   Scroll=0;
  780.   wait(1);
  781.   
  782. }
  783.  
  784.  
  785. //ÉöÄÜé≡3îàé╔
  786. function ThreeDigit(number){
  787.   
  788.   var char;
  789.   if (number< 100) char="0" +number;
  790.   if (number< 10 ) char="00"+number;
  791.   if (number>=100) char=""  +number;
  792.   
  793.   return char;
  794.   
  795. }
  796. //ÉöÄÜé≡2îàé╔
  797. function TwoDigit(number){
  798.   
  799.   var char;
  800.   if (number< 10) char="0"+number;
  801.   if (number>=10) char="" +number;
  802.   
  803.   return char;
  804.   
  805. }
  806.  
  807. function draw_next(){
  808.   
  809.   var e;
  810.   
  811.   for (e in $chars){
  812.     if (e is Freeze && e.next_stage!=null){
  813.       
  814.       fillRect(e.x  ,e.y-16,e.x+45,e.y-4,color(0,100,100),0);
  815.       drawText(e.x+3,e.y-15,"Stage"+e.next_stage,$clWhite,8,-1);
  816.     }
  817.   }
  818. }
  819.  
  820. function return_title(){
  821.   
  822.   for (e in $chars){
  823.     if (e is Freeze) e.die();
  824.   }
  825.   
  826.   for (_y=1;_y<25;_y++){
  827.     for  (_x=1;_x<31;_x++){
  828.       $map.set(_x,_y,$pat_block+0);
  829.     }  
  830.   }
  831.   $projectManager.loadPage($page_index);
  832.   die();
  833.   
  834. }
  835.  
  836. function message(text){
  837.   
  838.   var x1,y1,x2,y2;
  839.   
  840.   x1=$viewX+10;
  841.   y1=$viewY+350;
  842.   x2=x1+200;
  843.   y2=y1+10;
  844.   
  845.   fillRect(x1,y1,x2,y2,$clWhite,-1);
  846.   drawText(x1,y1,text,$clBlack,8,-2);
  847.   
  848. }
  849.  
  850. function select_stage(mode){
  851.   
  852.   var i;
  853.   var stage_exsits;
  854.   var w_x1,w_y1,w_x2,w_y2;
  855.   var t_x1,t_y1;
  856.   var c_x1,c_y1,c_x2,c_y2;
  857.   //var cx,cy;
  858.   var _x,_y;
  859.   var col;
  860.   
  861.   w_x1=$viewX+40;
  862.   w_y1=$viewY+40;
  863.   w_x2=w_x1+400;
  864.   w_y2=w_y1+300;
  865.   t_x1=w_x1+60;
  866.   t_y1=w_y1+70;
  867.   
  868.   stage_exists=new Array();
  869.   stage_exists.add("");
  870.   
  871.   //for (i=1;i<101;i++){
  872.   //  stage_exists.add(fileExists(ThreeDigit(i)+".txt")==1);
  873.   //}
  874.   
  875.   while(1){
  876.     fillRect(w_x1,w_y1,w_x2,w_y2,$clBlack,1);
  877.     drawText(t_x1,t_y1- 40,"Select Stage number" ,$clWhite,12,-1);
  878.     drawText(t_x1+200,t_y1+160,"X : Choose",$clWhite,12,-1);
  879.     drawText(t_x1+200,t_y1+180,"Q : Return",$clWhite,12,-1);
  880.     
  881.     col=$clWhite;    
  882.     for(_x=0;_x<10;_x++){
  883.       for(_y=0;_y<5;_y++){
  884.         //if (stage_exists.get(_x+_y*10+1)==1) col=$clWhite;
  885.         //if (stage_exists.get(_x+_y*10+1)==0 && (mode==null || mode==0)) col=$clBlue;
  886.         //if (stage_exists.get(_x+_y*10+1)==0 && (mode==1)              ) col=$clYellow;
  887.         drawText(t_x1+_x*30,t_y1+_y*30,TwoDigit(_x+_y*10+1),col,12,-1);
  888.       }
  889.     }
  890.     
  891.     c_x1=t_x1+cx*30;
  892.     c_y1=t_y1+cy*30;
  893.     c_x2=c_x1+15;
  894.     c_y2=c_y1+20;
  895.     
  896.     if (getkey(39)==1) cx++;
  897.     if (getkey(37)==1) cx--;
  898.     if (getkey(40)==1) cy++;
  899.     if (getkey(38)==1) cy--;
  900.     //if (getkey(88)==1 && (mode==null||mode==0) && stage_exists.get(cx+cy*10+1)==1) break;
  901.     //if (getkey(88)==1 && mode==1) break;
  902.     if (getkey(88)==1) break;
  903.     if (getkey(81)==1) {
  904.       wait(1);
  905.       return -1;
  906.     }
  907.     
  908.     if (cx<0) cx=9 ;
  909.     if (cx>9) cx=0;
  910.     if (cy<0) cy=4 ;
  911.     if (cy>4) cy=0;
  912.     fillRect(c_x1,c_y1,c_x2,c_y2,$clRed,0);
  913.     update();
  914.     
  915.   }
  916.   val=cx+cy*10+1;
  917.   return val;
  918. }
  919.  
  920.  
  921. function isblock(tile){
  922.   
  923.   var tile_bk1,tile_bk2;
  924.   var value;
  925.   
  926.   tile_bk1=$pat_block+6;
  927.   tile_bk2=$pat_block+11;
  928.   
  929.   value=(tile>=tile_bk1 && tile<=tile_bk2);
  930.   
  931.   return value;
  932. }
  933.  
  934. function init_save(){
  935.   
  936.   var header,footer;
  937.   var i,disp,text;
  938.   
  939.   header=new Array();
  940.   footer=new Array();
  941.   
  942.   while(1){
  943.     
  944.     _x1=trunc($mouseX/32+sx)*32;
  945.     _y1=trunc($mouseY/32+sy)*32;
  946.     _x2=_x1+32;
  947.     _y2=_y1+32;
  948.     now_x=trunc($mouseX/32+sx);
  949.     now_y=trunc($mouseY/32+sy);
  950.     drawRect(_x1,_y1,_x2,_y2,$clRed);
  951.     
  952.     if (getkey(39)<=1) Sx--;
  953.     if (getkey(37)<=1) Sx++;
  954.     if (getkey(40)<=1) Sy--;
  955.     if (getkey(38)<=1) Sy++;
  956.     if (Sx<1 )  Sx=1 ;
  957.     if (Sx>16)  Sx=16;
  958.     if (Sy<1 )  Sy=1 ;
  959.     if (Sy>13)  Sy=13;
  960.     
  961.     SetOKorNOT=isblock($map.get(_x1/32,_y1/32));
  962.     
  963.     if (getkey(1)==1) {
  964.       if (SetOKorNOT==1) $mplayer.play($se_cursor00_a);
  965.       if (SetOKorNOT==0) break;
  966.     } 
  967.     if (getkey(81)==1){
  968.       wait(1);
  969.       return;
  970.     }
  971.     
  972.     esc=0;
  973.     if ($mouseX>32*10 && $mouseY<32*2) esc=320;
  974.     
  975.     $map.scrollTo(sx*32,sy*32);
  976.     
  977.     fillRect(350+sx*32,10+sy*32+esc,470+sx*32,60+sy*32+esc,color(100,0,100),1);
  978.     drawText(360+sx*32,13+sy*32+esc   ,"âXâ^ü[âgê╩ÆuÉ▌ÆΦ",$clWhite,8);
  979.     drawText(360+sx*32,13+sy*32+12+esc,"ì╢âNâèâbâNüFê╩ÆuîêÆΦ",$clWhite,8);
  980.     drawText(360+sx*32,13+sy*32+24+esc,"ü¬ü½ü⌐ü¿üFëµû╩ê┌ô«",$clWhite,8);
  981.     drawText(360+sx*32,13+sy*32+36+esc,"QüFâGâfâBâbâgé╔û▀éΘ",$clWhite,8);
  982.     update();
  983.     
  984.   }
  985.   
  986.   disp=appear(new Effect(x,y,"nowsaving"));
  987.   wait(1);
  988.   file=new FileReader(FileName);
  989.   
  990.   while(1){
  991.     text=file.readLn();
  992.     if (text=="*init") break;
  993.     header.add(text);
  994.   }
  995.   while(1){
  996.     text=file.readLn();
  997.     if (text=="") break;
  998.   }
  999.   while(1){
  1000.     text=file.readLn();
  1001.     if (text==null) break;
  1002.     footer.add(text);
  1003.  
  1004.   }
  1005.   file.close();
  1006.   
  1007.  
  1008.   file=new FileWriter(FileName);
  1009.   
  1010.   file.writeLn("*init");
  1011.   for(i=0;i<header.size();i++){
  1012.     file.writeLn(header.get(i));
  1013.   }
  1014.   
  1015.   file.writeLn("Start  :"+ThreeDigit(StageNow));
  1016.   file.writeLn("X-pos  :"+ThreeDigit(now_x));
  1017.   file.writeLn("Y-pos  :"+ThreeDigit(now_y));
  1018.   file.writeLn("Remain :002");
  1019.   file.writeLn("");
  1020.     
  1021.   for(i=0;i<footer.size();i++){
  1022.     file.writeLn(footer.get(i));
  1023.   }
  1024.   
  1025.   file.close();
  1026.   disp.die();
  1027.  
  1028. }
  1029.  
  1030.