home *** CD-ROM | disk | FTP | other *** search
/ 1,000 Games (Collectors Edition) - Disc 2 / 1000GamesDisc2.iso / solution / editors / lspeed / lscheat.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-11-02  |  9.3 KB  |  294 lines

  1. {$B+}
  2. {$R+}
  3. program LightspeedEdit;   { inventory and resource editor }
  4.  
  5. { Program copyright 1992 by Charles J. Kelly III }
  6.  
  7. uses
  8.   CRT, DOS;
  9.  
  10. var
  11.   DirInfo: SearchRec;
  12.   savefile: file;
  13.   GameFile: string[12];
  14.   ClusterName: string[8];
  15.   Inventory: array[1..18] of Word;
  16.   Resources: array[1..6] of Word;
  17.   Category, Choice, ClearVar: Integer;
  18.   Modifier: Longint;
  19.  
  20. label
  21.   stt, Fin, DOA;
  22.  
  23. procedure SAVEINVENTORY;
  24.   begin
  25.     Reset(savefile, 1);
  26.     Seek(SaveFile, ($AA3 + Modifier));
  27.     BlockWrite(SaveFile, Inventory[1], 2);
  28.     Seek(SaveFile, ($AA5 + Modifier));
  29.     BlockWrite(SaveFile, Inventory[2], 2);
  30.     Seek(SaveFile, ($AA7 + Modifier));
  31.     BlockWrite(SaveFile, Inventory[3], 2);
  32.     Seek(SaveFile, ($AA9 + Modifier));
  33.     BlockWrite(SaveFile, Inventory[4], 2);
  34.     Seek(SaveFile, ($AAB + Modifier));
  35.     BlockWrite(SaveFile, Inventory[5], 2);
  36.     Seek(SaveFile, ($AAD + Modifier));
  37.     BlockWrite(SaveFile, Inventory[6], 2);
  38.     Seek(SaveFile, ($AAF + Modifier));
  39.     BlockWrite(SaveFile, Inventory[7], 2);
  40.     Seek(SaveFile, ($AB1 + Modifier));
  41.     BlockWrite(SaveFile, Inventory[8], 2);
  42.     Seek(SaveFile, ($AB3 + Modifier));
  43.     BlockWrite(SaveFile, Inventory[9], 2);
  44.     Seek(SaveFile, ($AB5 + Modifier));
  45.     BlockWrite(SaveFile, Inventory[10], 2);
  46.     Seek(SaveFile, ($AB7 + Modifier));
  47.     BlockWrite(SaveFile, Inventory[11], 2);
  48.     Seek(SaveFile, ($ABB + Modifier));
  49.     BlockWrite(SaveFile, Inventory[12], 2);
  50.     Seek(SaveFile, ($ABF + Modifier));
  51.     BlockWrite(SaveFile, Inventory[13], 2);
  52.     Seek(SaveFile, ($AC1 + Modifier));
  53.     BlockWrite(SaveFile, Inventory[14], 2);
  54.     Seek(SaveFile, ($ACB + Modifier));
  55.     BlockWrite(SaveFile, Inventory[15], 2);
  56.     Seek(SaveFile, ($AD1 + Modifier));
  57.     BlockWrite(SaveFile, Inventory[16], 2);
  58.     Seek(SaveFile, ($AC9 + Modifier));
  59.     BlockWrite(SaveFile, Inventory[17], 2);
  60.     Seek(SaveFile, ($ADF + Modifier));
  61.     BlockWrite(SaveFile, Inventory[18], 2);
  62.     Close(SaveFile);
  63.   end;
  64.  
  65. procedure LOADINVENTORY;
  66.   begin                          
  67.     Reset(savefile, 1);
  68.     Seek(SaveFile, ($AA3 + Modifier));
  69.     BlockRead(SaveFile, Inventory[1], 2);
  70.     Seek(SaveFile, ($AA5 + Modifier));
  71.     BlockRead(SaveFile, Inventory[2], 2);
  72.     Seek(SaveFile, ($AA7 + Modifier));
  73.     BlockRead(SaveFile, Inventory[3], 2);
  74.     Seek(SaveFile, ($AA9 + Modifier));
  75.     BlockRead(SaveFile, Inventory[4], 2);
  76.     Seek(SaveFile, ($AAB + Modifier));
  77.     BlockRead(SaveFile, Inventory[5], 2);
  78.     Seek(SaveFile, ($AAD + Modifier));
  79.     BlockRead(SaveFile, Inventory[6], 2);
  80.     Seek(SaveFile, ($AAF + Modifier));
  81.     BlockRead(SaveFile, Inventory[7], 2);
  82.     Seek(SaveFile, ($AB1 + Modifier));
  83.     BlockRead(SaveFile, Inventory[8], 2);
  84.     Seek(SaveFile, ($AB3 + Modifier));
  85.     BlockRead(SaveFile, Inventory[9], 2);
  86.     Seek(SaveFile, ($AB5 + Modifier));
  87.     BlockRead(SaveFile, Inventory[10], 2);
  88.     Seek(SaveFile, ($AB7 + Modifier));
  89.     BlockRead(SaveFile, Inventory[11], 2);
  90.     Seek(SaveFile, ($ABB + Modifier));
  91.     BlockRead(SaveFile, Inventory[12], 2);
  92.     Seek(SaveFile, ($ABF + Modifier));
  93.     BlockRead(SaveFile, Inventory[13], 2);
  94.     Seek(SaveFile, ($AC1 + Modifier));
  95.     BlockRead(SaveFile, Inventory[14], 2);
  96.     Seek(SaveFile, ($ACB + Modifier));
  97.     BlockRead(SaveFile, Inventory[15], 2);
  98.     Seek(SaveFile, ($AD1 + Modifier));
  99.     BlockRead(SaveFile, Inventory[16], 2);
  100.     Seek(SaveFile, ($AC9 + Modifier));
  101.     BlockRead(SaveFile, Inventory[17], 2);
  102.     Seek(SaveFile, ($ADF + Modifier));
  103.     BlockRead(SaveFile, Inventory[18], 2);
  104.     Close(SaveFile);
  105.   end;
  106.  
  107. procedure SAVERESOURCES;
  108.   begin
  109.   Reset(SaveFile, 1);
  110.   Seek(SaveFile, ($A85 + Modifier));
  111.   BlockWrite(SaveFile, Resources[1], 2);
  112.   Seek(SaveFile, ($A87 + Modifier));
  113.   BlockWrite(SaveFile, Resources[2], 2);
  114.   Seek(SaveFile, ($A89 + Modifier));
  115.   BlockWrite(SaveFile, Resources[3], 2);
  116.   Seek(SaveFile, ($A8B + Modifier));
  117.   BlockWrite(SaveFile, Resources[4], 2);
  118.   Seek(SaveFile, ($741 + Modifier));
  119.   BlockWrite(SaveFile, Resources[5], 2);
  120.   Seek(SaveFile, ($74B + Modifier));
  121.   BlockWrite(SaveFile, Resources[6], 2);
  122.   Close(SaveFile);
  123.   end;
  124.  
  125.  
  126. procedure LOADRESOURCES;
  127.   begin
  128.   Reset(SaveFile, 1);
  129.   Seek(SaveFile, ($A85 + Modifier));
  130.   BlockRead(SaveFile, Resources[1], 2);
  131.   Seek(SaveFile, ($A87 + Modifier));
  132.   BlockRead(SaveFile, Resources[2], 2);
  133.   Seek(SaveFile, ($A89 + Modifier));
  134.   BlockRead(SaveFile, Resources[3], 2);
  135.   Seek(SaveFile, ($A8B + Modifier));
  136.   BlockRead(SaveFile, Resources[4], 2);
  137.   Seek(SaveFile, ($741 + Modifier));
  138.   BlockRead(SaveFile, Resources[5], 2);
  139.   Seek(SaveFile, ($74B + Modifier));
  140.   BlockRead(SaveFile, Resources[6], 2);
  141.   Close(SaveFile);
  142.   end;
  143.  
  144. procedure TitleScreen;
  145.   begin
  146.     HighVideo;
  147.     ClrScr;
  148.     TextBackground(9);
  149.     TextColor(15);
  150.     ClrScr;
  151.     Writeln(' Lightspeed inventory and resource editor');
  152.     Writeln(' Copyright 1992  by C. Kelly III ');
  153.     NormVideo;
  154.     Window(1, 4, 80, 25);
  155.     TextBackground(9);
  156.     TextColor(15);
  157.   end;
  158.  
  159. procedure MainMenu;
  160.   label
  161.     bg;
  162.   begin
  163. bg: ClrScr;
  164.     Writeln(' MENU FOR SAVEFILE ', Gamefile,' in ',ClusterName,' cluster');
  165.     Writeln(' ');
  166.     Writeln('                1.  Items in ship''s hold. ');
  167.     Writeln('                2.  Resources. ');
  168.     Writeln(' ');
  169.     Write(' Choose category to edit  ( 3 to exit program ): ');
  170.     Readln(Choice);
  171.     If (Choice < 1) or (Choice > 3) then
  172.       goto bg;
  173.   end;
  174.  
  175. procedure INVENTORYMENU;
  176.   var
  177.     Value: Word;
  178.     Number: Integer;
  179.   label
  180.     bg, stp;
  181.   begin
  182.     Writeln(' Inventory menu for savefile ', Gamefile,' in ',ClusterName,' cluster');
  183.     Window(1, 6, 80, 25);
  184. bg: ClrScr;
  185.     Writeln('1. Turbines: ',Inventory[1],'   2. Normal Burners: ',Inventory[2],'   3. Accelerators: ',Inventory[3]);
  186.     TextColor(10);
  187.     Writeln('4. Normal Blasters: ',Inventory[4],'   5. Normal Secondaries: ',Inventory[5]);
  188.     TextColor(15);
  189.     Writeln('6. Radiators: ',Inventory[6],'   7. Linkages: ',Inventory[7],'   8. Converters: ',Inventory[8]);
  190.     TextColor(10);
  191.     Writeln('9. Cody Targeters: ',Inventory[9],'   10. Vespucci Navigators: ',Inventory[10]);
  192.     TextColor(15);
  193.     Writeln('11. Data Casings: ',Inventory[11],'   12. Maneuverable Burners: ',Inventory[12]);
  194.     TextColor(10);
  195.     Writeln('13. High Energy Blasters: ',Inventory[13],'   14. Neutron Secondaries: ',Inventory[14]);
  196.     TextColor(15);
  197.     Writeln('15. Magellan Navigators: ',Inventory[15],'   16. Fast Burners: ',Inventory[16]);
  198.     TextColor(10);
  199.     Writeln('17. Hickock Targeters: ',Inventory[17],'   18. Oakley Targeters: ',Inventory[18]);
  200.     Writeln(' ');
  201.     TextColor(15);
  202.     Write(' Enter inventory number to change ( 255 to exit ): ');
  203.     Readln(Number);
  204.     If ((Number < 1) or (Number > 18)) and (Number <> 255) then
  205.       goto bg;
  206.     If Number = 255 then goto stp;
  207.     Write(' Enter value for inventory ( 0 - 65535 ) : ');
  208.     Readln(Value);
  209.     Inventory[Number]:=Value;
  210.     goto bg;
  211. stp:Window(1, 4, 80, 25);
  212.     SaveInventory;
  213.   end;
  214.  
  215. procedure RESOURCEMENU;
  216.   var
  217.     Number: Integer;
  218.     Value: Word;
  219.   label
  220.     bg, stp;
  221.   begin
  222.     Writeln(' Resource menu for savefile ', Gamefile,' in ',ClusterName,' cluster');
  223.     Window(1, 6, 80, 25);
  224. bg: ClrScr;
  225.     Writeln('   1. Radioactives:  ',Resources[1]);
  226.     Writeln('   2. Waters      :  ',Resources[2]);
  227.     Writeln('   3. Organics    :  ',Resources[3]);
  228.     Writeln('   4. Metals      :  ',Resources[4]);
  229.     Writeln(' ');
  230.     Writeln('   5. Mining Pods     : ',Resources[5]);
  231.     Writeln('   6. Missile Chassis : ',Resources[6]);
  232.     Write(' Select resource number to change ( 255 to exit ): ');
  233.     Readln(Number);
  234.     If ((Number < 1) or (Number > 6)) and (Number <> 255) then
  235.       goto bg;
  236.     If Number = 255 then
  237.       goto stp;
  238.     Write(' Enter value for resource ( 0 - 65535): ');
  239.     Readln(Value);
  240.     Resources[Number]:=Value;
  241.     goto bg;
  242. stp:Window(1, 4, 80, 25);
  243.     SAVERESOURCES;
  244.   end;
  245.  
  246. begin
  247.   GameFile:=ParamStr(1);
  248.   FindFirst(GameFile, AnyFile, DirInfo);
  249.   If DosError <> 0 then
  250.       begin
  251.       Writeln(' ');
  252.       Writeln(' I can''t find ', GameFile,' ! ');
  253.       Writeln(' ');
  254.       Writeln(' You must run this program in the same directory');
  255.       Writeln(' in which ', GameFile,' resides.');
  256.       Writeln(' ');
  257.       Halt;
  258.     end;
  259.   If (DirInfo.size <> 4775) and (DirInfo.size <> 7685) then
  260.     begin
  261.       ClrScr;
  262.       Writeln(' The file you specified is not a valid LIGHTSPEED savegame ');
  263.       Writeln(' file.  Please make sure you enter the correct filename. ');
  264.       Writeln('  ');
  265.       Writeln(' EXAMPLE:  LSCHEAT savegame.sav  ');
  266.       goto Doa;
  267.     end;
  268.   If DirInfo.size = 4775 then
  269.     Modifier:=0;
  270.   If DirInfo.size = 7685 then
  271.     Modifier:=$B5E;
  272.   If DirInfo.size = 4775 then
  273.     ClusterName:='HYADES';
  274.   If DirInfo.size = 7685 then
  275.     ClusterName:='CERBERUS';
  276. For ClearVar:=1 to 18 do
  277.   Inventory[ClearVar]:=0;
  278. For ClearVar:=1 to 4 do
  279.   Resources[ClearVar]:=0;
  280. Assign(savefile, GameFile);  { savename file entered after .EXE }
  281. TitleScreen; { screen setup and title display }
  282. LOADINVENTORY;
  283. LOADRESOURCES;
  284. stt:MainMenu;
  285. Case Choice of
  286.   1: INVENTORYMENU;
  287.   2: RESOURCEMENU;
  288.   3: GOTO FIN;
  289. end;
  290. goto stt;
  291. Fin:ClrScr;
  292. Writeln(' Lightspeed editor ');
  293. Writeln(' Finished !');
  294. DOA:end.