home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 014.DSAVANT.CPP < prev    next >
C/C++ Source or Header  |  1993-08-04  |  14KB  |  648 lines

  1. /* SHAREWARE from Darland Enterprises
  2. if you find this program useful send $10.00
  3. (In IOWA plus $0.60 sales tax) 
  4. TO DARLAND ENTERPISES
  5. 1965 Winding Hills RD #1304
  6. Davenport IA 52807 */
  7. /* Written as dos executable using Microsoft visual c++ */
  8. #include <fstream.h> 
  9. #include <fcntl.h>
  10. #include <io.h>
  11. #include <stdlib.h> 
  12. #include <string.h>  
  13. #define DEBUG_N
  14. #define PROD_N
  15. #include "dsavant.h" 
  16. static char fname[80];
  17. ofstream lpt("PC.TXT");
  18. void pc_class::pc_print()
  19.     { 
  20.     lpt << "Name:        " << name << "\n"; 
  21.     switch (sex)
  22.         {
  23.     case MALE:
  24.         lpt << "Male\n";
  25.         break;
  26.     case FEMALE:
  27.         lpt << "Female\n";
  28.         break;
  29.         }
  30.     switch (race)
  31.         {
  32.     case HUMAN:
  33.         lpt << "Human\n";
  34.         break;
  35.     case ELF:
  36.         lpt << "Elf\n";
  37.         break;
  38.     case HOBBIT:
  39.         lpt << "Hobbit\n";
  40.         break;
  41.     case LIZARDMAN:
  42.         lpt << "Lizardman\n";
  43.         break;
  44.     case DRACON:
  45.         lpt << "Dracon\n";
  46.         break;
  47.     case DWARF:
  48.         lpt << "Dwarf\n";
  49.         break;
  50.     case GNOME:
  51.         lpt << "Gnome\n";
  52.         break;
  53.     case FAERIE:
  54.         lpt << "Faerie\n";
  55.         break;
  56.     case FELPURR:
  57.         lpt << "Felpurr\n";
  58.         break;
  59.     case RAWULF:
  60.         lpt << "Rawulf\n";
  61.         break;
  62.     case MOOK:
  63.         lpt << "Mook\n";
  64.         break;
  65.     default:
  66.         lpt << "Race: " << (int) race << "\n"; 
  67.         break;
  68.         }    
  69.     switch (player_class)
  70.         {
  71.     case MAGE:
  72.         lpt << "Mage\n";
  73.         break;
  74.     case THIEF:
  75.         lpt << "Thief\n";
  76.         break;
  77.     case FIGHTER:
  78.         lpt << "Fighter\n"; 
  79.         break;
  80.     case PRIEST:
  81.         lpt << "Priest\n";
  82.         break;
  83.     case RANGER:
  84.         lpt << "Ranger\n";
  85.         break;
  86.     case ALCHEMIST:
  87.         lpt << "Alchemist\n";
  88.         break;
  89.     case BARD:
  90.         lpt << "Bard\n";
  91.         break;
  92.     case PSIONIC:
  93.         lpt << "Psionic\n";
  94.         break;
  95.     case VALKYRI:
  96.         lpt << "Valkyri\n";
  97.         break;
  98.     case BISHOP:
  99.         lpt << "Bishop\n";
  100.         break;
  101.     case LORD:
  102.         lpt << "Lord\n";
  103.         break;
  104.     case SAMURAI:
  105.         lpt << "Samurai\n";
  106.         break;
  107.     case MONK:
  108.         lpt << "Monk\n";
  109.         break;
  110.     case NINJA:
  111.         lpt << "Ninja\n";
  112.         break;
  113.     default:
  114.         lpt << "CLASS: " << (int) player_class << "\n";
  115.         break;
  116.         }
  117.     lpt << "Experience   " << (unsigned long) experience << "\n";   
  118.     lpt << "Gold         " << (unsigned long) gold << "\n";
  119.     lpt << "Hits         " << (int) hit_points << "/" << max_hit_points << "\n";
  120.     lpt << "Strength     " << (int) strength  << "\n"; 
  121.     lpt << "Intelligence " << (int) intelligence  << "\n"; 
  122.     lpt << "Piety        " << (int) piety << "\n"; 
  123.     lpt << "Vitality     " << (int) vitality << "\n"; 
  124.     lpt << "Dexterity    " << (int) dexterity  << "\n"; 
  125.     lpt << "Speed        " << (int) speed  << "\n"; 
  126.     lpt << "Personality  " << (int) personality  << "\n"; 
  127.     lpt << "Karma        " << (int) karma  << "\n"; 
  128.  
  129.     cout << "Name:        " << name << "\n"; 
  130.     switch (sex)
  131.         {
  132.     case MALE:
  133.         cout << "Male\n";
  134.         break;
  135.     case FEMALE:
  136.         cout << "Female\n";
  137.         break;
  138.         }
  139.     switch (race)
  140.         {
  141.     case HUMAN:
  142.         cout << "Human\n";
  143.         break;
  144.     case ELF:
  145.         cout << "Elf\n";
  146.         break;
  147.     case HOBBIT:
  148.         cout << "Hobbit\n";
  149.         break;
  150.     case LIZARDMAN:
  151.         cout << "Lizardman\n";
  152.         break;
  153.     case DRACON:
  154.         cout << "Dracon\n";
  155.         break;
  156.     case DWARF:
  157.         cout << "Dwarf\n";
  158.         break;
  159.     case GNOME:
  160.         cout << "Gnome\n";
  161.         break;
  162.     case FAERIE:
  163.         cout << "Faerie\n";
  164.         break;
  165.     case FELPURR:
  166.         cout << "Felpurr\n";
  167.         break;
  168.     case RAWULF:
  169.         cout << "Rawulf\n";
  170.         break;
  171.     case MOOK:
  172.         cout << "Mook\n";
  173.         break;
  174.     default:
  175.         cout << "Race: " << (int) race << "\n"; 
  176.         break;
  177.         }
  178.     switch (player_class)
  179.         {
  180.     case MAGE:
  181.         cout << "Mage\n";
  182.         break;
  183.     case THIEF:
  184.         cout << "Thief\n";
  185.         break;
  186.     case FIGHTER:
  187.         cout << "Fighter\n"; 
  188.         break;
  189.     case PRIEST:
  190.         cout << "Priest\n";
  191.         break;
  192.     case RANGER:
  193.         cout << "Ranger\n";
  194.         break;
  195.     case ALCHEMIST:
  196.         cout << "Alchemist\n";
  197.         break;
  198.     case BARD:
  199.         cout << "Bard\n";
  200.         break;
  201.     case PSIONIC:
  202.         cout << "Psionic\n";
  203.         break;
  204.     case VALKYRI:
  205.         cout << "Valkyri\n";
  206.         break;
  207.     case BISHOP:
  208.         cout << "Bishop\n";
  209.         break;
  210.     case LORD:
  211.         cout << "Lord\n";
  212.         break;
  213.     case SAMURAI:
  214.         cout << "Samurai\n";
  215.         break;
  216.     case MONK:
  217.         cout << "Monk\n";
  218.         break;
  219.     case NINJA:
  220.         cout << "Ninja\n";
  221.         break;
  222.     default:
  223.         cout << "CLASS: " << (int) player_class << "\n";
  224.         break;
  225.         }                                                                        
  226.         
  227.     cout << "Experience   " << (unsigned long) experience << "\n"; 
  228.     cout << "Gold         " << (unsigned long) gold << "\n"; 
  229.     cout << "Hits         " << (int) hit_points << "/" << max_hit_points << "\n";
  230.     cout << "Strength     " << (int) strength  << "\n"; 
  231.     cout << "Intelligence " << (int) intelligence  << "\n"; 
  232.     cout << "Piety        " << (int) piety << "\n"; 
  233.     cout << "Vitality     " << (int) vitality << "\n"; 
  234.     cout << "Dexterity    " << (int) dexterity  << "\n"; 
  235.     cout << "Speed        " << (int) speed  << "\n"; 
  236.     cout << "Personality  " << (int) personality  << "\n"; 
  237.     cout << "Karma        " << (int) karma  << "\n"; 
  238.  
  239.     }
  240. void pc_class::pc_edit()                                          
  241.     {
  242.     char choice;
  243.     unsigned long value;
  244.         
  245.     while (choice != 'q')
  246.         { 
  247.     cout << "Name:        " << name << "\n"; 
  248.     switch (sex)
  249.         {
  250.     case MALE:
  251.         cout << "Male\n";
  252.         break;
  253.     case FEMALE:
  254.         cout << "Female\n";
  255.         break;
  256.         }
  257.     switch (race)
  258.         {
  259.     case HUMAN:
  260.         cout << "Human\n";
  261.         break;
  262.     case ELF:
  263.         cout << "Elf\n";
  264.         break;
  265.     case HOBBIT:
  266.         cout << "Hobbit\n";
  267.         break;
  268.     case LIZARDMAN:
  269.         cout << "Lizardman\n";
  270.         break;
  271.     case DRACON:
  272.         cout << "Dracon\n";
  273.         break;
  274.     case DWARF:
  275.         cout << "Dwarf\n";
  276.         break;
  277.     case GNOME:
  278.         cout << "Gnome\n";
  279.         break;
  280.     case FAERIE:
  281.         cout << "Faerie\n";
  282.         break;
  283.     case FELPURR:
  284.         cout << "Felpurr\n";
  285.         break;
  286.     case RAWULF:
  287.         cout << "Rawulf\n";
  288.         break;
  289.     case MOOK:
  290.         cout << "Mook\n";
  291.         break;
  292.     default:
  293.         cout << "Race: " << (int) race << "\n"; 
  294.         break;
  295.         }
  296.     switch (player_class)
  297.         {
  298.     case MAGE:
  299.         cout << "Mage\n";
  300.         break;
  301.     case THIEF:
  302.         cout << "Thief\n";
  303.         break;
  304.     case FIGHTER:
  305.         cout << "Fighter\n"; 
  306.         break;
  307.     case PRIEST:
  308.         cout << "Priest\n";
  309.         break;
  310.     case RANGER:
  311.         cout << "Ranger\n";
  312.         break;
  313.     case ALCHEMIST:
  314.         cout << "Alchemist\n";
  315.         break;
  316.     case BARD:
  317.         cout << "Bard\n";
  318.         break;
  319.     case PSIONIC:
  320.         cout << "Psionic\n";    
  321.         break;
  322.     case VALKYRI:
  323.         cout << "Valkyri\n";
  324.         break;
  325.     case BISHOP:
  326.         cout << "Bishop\n";
  327.         break;
  328.     case LORD:
  329.         cout << "Lord\n";
  330.         break;
  331.     case SAMURAI:
  332.         cout << "Samurai\n";
  333.         break;
  334.     case MONK:
  335.         cout << "Monk\n";
  336.         break;
  337.     case NINJA:
  338.         cout << "Ninja\n";
  339.         break;
  340.     default:
  341.         cout << "CLASS: " << (int) player_class << "\n";
  342.         break;
  343.         }                                                     
  344.     cout << "1 Experience   " << (unsigned long) experience << "\n";
  345.     cout << "2 Strength     " << (int) strength  << "\n"; 
  346.     cout << "3 Intelligence " << (int) intelligence  << "\n"; 
  347.     cout << "4 Piety        " << (int) piety << "\n"; 
  348.     cout << "5 Vitality     " << (int) vitality << "\n"; 
  349.     cout << "6 Dexterity    " << (int) dexterity  << "\n"; 
  350.     cout << "7 Speed        " << (int) speed  << "\n"; 
  351.     cout << "8 Personality  " << (int) personality  << "\n"; 
  352.     cout << "9 Karma        " << (int) karma  << "\n"; 
  353.     cout << "h Hits         " << (int) hit_points << "\n";
  354.     cout << "m Maximum Hits " << (int) max_hit_points << "\n";
  355.     cout << "g Gold         " << (unsigned long) gold << "\n";
  356.             cout << "q Quit\n";
  357.             cout << "Choice:\n";
  358.             cin >> choice;
  359.             switch (choice)
  360.                    {
  361.  
  362.                case '1':   
  363.                    cout << "Experience desired:\n";
  364.                    cin >> value;
  365.                    if (value >= 0)
  366.                        experience = value;
  367.                    break;
  368.                  case 'g':   
  369.                    cout << "Gold desired:\n";
  370.                    cin >> value;
  371.                    if (value >= 0)
  372.                        gold = value;
  373.                    break;
  374.                case 'h':
  375.                    cout << "Hits desired\n";
  376.                    cin >> value;
  377.                    if (value >= 1 && value <= max_hit_points)
  378.                        hit_points = value;
  379.                    else 
  380.                        cout << "Illegal value\n";
  381.                    break;
  382.                case 'm':
  383.                    cout << "Maximum Hits desired\n";
  384.                    cin >> value;
  385.                    if (value >= hit_points && value < 32000)
  386.                        max_hit_points = value;
  387.                    else 
  388.                        cout << "Illegal value\n";
  389.                    break;
  390.                 break;
  391.                                                         
  392.                                                         
  393.  
  394. #ifdef DEBUG_1
  395.             case 'c':
  396.                 cout << "Class desired\n";
  397.                 cin >> value;
  398.                 player_class = value;
  399.                 break;
  400. #endif
  401.                case '2':   
  402.                    cout << "Strength desired:\n";
  403.                    cin >> value;
  404.                    if (value >= 3 && value <= 18)
  405.                        strength = value;
  406.                    else 
  407.                        cout << "Illegal value\n";
  408.                    break;
  409.                  case '3':   
  410.                    cout << "Intelligence desired:\n";
  411.                    cin >> value;
  412.                        if (value >= 3 && value <= 18)
  413.                            intelligence = value;
  414.                    else 
  415.                        cout << "Illegal value\n";
  416.                    break;
  417.                  case '4':   
  418.                    cout << "Piety desired:\n";
  419.                    cin >> value;
  420.                        if (value >= 3 && value <= 18)
  421.                            piety = value;
  422.                    else 
  423.                        cout << "Illegal value\n";
  424.                    break;
  425.                  case '5':   
  426.                    cout << "Vitality desired:\n";
  427.                    cin >> value;
  428.                    if (value >= 3 && value <= 18)
  429.                        vitality = value;
  430.                    else 
  431.                        cout << "Illegal value\n";
  432.                    break;
  433.                  case '6':   
  434.                    cout << "Dexterity desired:\n";
  435.                    cin >> value;
  436.                    if (value >= 3 && value <= 18)
  437.                        dexterity = value;
  438.                    else 
  439.                        cout << "Illegal value\n";
  440.                    break;
  441.                  case '7':   
  442.                    cout << "Speed desired:\n";
  443.                    cin >> value;
  444.                    if (value >= 3 && value <= 18)
  445.                        speed = value;
  446.                    else 
  447.                        cout << "Illegal value\n";
  448.                    break;
  449.                  case '8':   
  450.                    cout << "Personality desired:\n";
  451.                    cin >> value;
  452.                    if (value >= 3 && value <= 18)
  453.                        personality = value;
  454.                    else 
  455.                        cout << "Illegal value\n";
  456.                    break;
  457.                  case '9':   
  458.                    cout << "Karma desired:\n";
  459.                    cin >> value;
  460.                    if (value >= 3 && value <= 18)
  461.                        karma = value;
  462.                    else 
  463.                        cout << "Illegal value\n";
  464.                    break;                 
  465.               case 'q':
  466.                    break;
  467.                    }
  468.            
  469.         }
  470.     }
  471.     
  472. void pc_file_class::init()
  473.     {
  474.     int i;
  475.                    
  476.     cout << "Enter filename or 'y' for C:\\dsavant\\savegame.dbs\n";  
  477.     cout << "You MUST enter a non empty string\n";
  478.     
  479.     cin >> fname;
  480.     if (fname[0]=='y' && fname[1]==0)
  481.         strcpy(fname,"c:\\dsavant\\savegame.dbs"); 
  482.     ifstream pcf(fname,ios::in|ios::binary);
  483.     
  484.     pcf.read((char *) &unkf1[0], 14324); 
  485.     if (!pcf.good())
  486.         {
  487.         cout << "File not found\n";
  488.         exit(0);
  489.         }
  490.     for (i=0;i<360;i++ )
  491.         unkt1[i]=1;
  492.     for (i=0;i<208;i++)
  493.         unkt2[i]=1; 
  494.     pcf.close();
  495.     
  496.     }
  497. void pc_file_class::fin()
  498.     {  
  499.     int i;
  500.     ofstream pcf(fname,ios::out|ios::binary);
  501.  
  502.     pcf.write((char *) &unkf1[0], 14324);
  503.     
  504.     pcf.close();
  505.     
  506.     }           
  507. void pc_file_class::pc_print()
  508.     { 
  509.     int i;
  510.     
  511.     
  512.     for (i=0;i<6;i++)
  513.         {
  514. //        if (this->pc_status[i])
  515.             {
  516.             this->pcs[i].pc_print();
  517.             }
  518.         }       
  519.     }
  520. void pc_file_class::pc_edit()
  521.     { 
  522.     int i;
  523.     char choice;
  524.     int sub;
  525.     
  526.     choice = 0;
  527.     while (choice != '7')
  528.         {
  529.         for (i=0;i<6;i++)
  530.             {
  531.             cout << i+1 << " " << pcs[i].name << "\n";
  532.             }
  533.         cout << "7 Quit\n"; 
  534.         cout << "Choice:";
  535.         cin >> choice;
  536.         sub = choice - '1';
  537.         if (sub >= 0 && sub < 6 )
  538.             pcs[sub].pc_edit();
  539.         }       
  540.     }
  541. #ifdef DEBUG_1
  542. void pc_file_class::pc_comp()
  543.     { 
  544.     int i;
  545.     int sel1,sel2,sel3;
  546.     
  547.     cout << "Char 1 sub:";
  548.     cin >> sel1;
  549.     cout << "Char 2 sub:";
  550.     cin  >> sel2;
  551.     cout << "Char 3 sub:";
  552.     cin  >> sel3; 
  553.     
  554.     for (i=0;i<360;i++)
  555.         {
  556.         this->unkt1[i] = this->unkt1[i] && this->pcs[sel1].unk1[i] == this->pcs[sel2].unk1[i] 
  557.         && this->pcs[sel1].unk1[i] != this->pcs[sel3].unk1[i];
  558.         }    
  559.     for (i=0;i<208;i++)
  560.         {
  561.         this->unkt2[i] = this->unkt2[i] && this->pcs[sel1].unk2[i] == this->pcs[sel2].unk2[i] 
  562.         && this->pcs[sel1].unk2[i] != this->pcs[sel3].unk2[i];
  563.         }
  564.     }             
  565. void pc_file_class::pc_results()
  566.     {
  567.     int i;
  568.     
  569.     for (i=0;i<360;i++)
  570.         {
  571.         if (this->unkt1[i])
  572.             {
  573.             cout << "t1[i] = " << i << "\n";
  574.             lpt << "t1[i] = " << i << "\n";
  575.             }
  576.         }
  577.     for (i=0;i<208;i++)
  578.         {
  579.         if (this->unkt2[i])
  580.             {
  581.             cout << "t2[i] = " << i << "\n";
  582.             lpt << "t2[i] = " << i << "\n";
  583.             }
  584.         }
  585.     }
  586. #endif
  587. main()
  588.     {
  589.     char choice;    
  590.     
  591.     pc_file_class *dspcdjd = new pc_file_class;
  592.     if (dspcdjd == NULL)
  593.         {
  594.         cout << "out of memory\n";
  595.         }    
  596.     
  597.     dspcdjd->init();
  598.     choice = 0;
  599.     while (choice != '3')
  600.         {
  601.  
  602.         cout << "Copyright (C) Dennis J. Darland 1993\n";
  603.         cout << "Shareware If you find this program useful, send \n";
  604.         cout << " a check for $10.00 \n" ; 
  605.         cout << "In Iowa, add 6% sales tax = $0.60. Total $10.60 in Iowa\n";
  606.         cout << "To: Darland Enterprises/Savant\n";
  607.         cout << "1965 Winding Hills Road #1304\n";
  608.         cout << "Davenport, IA 52807\n";
  609.         cout << "\n";        
  610.         cout << "MENU\n";
  611.         cout << "\n";
  612.         cout << "1. Print characters to pc.txt\n";  
  613. #ifdef DEBUG_1
  614.         cout << "C. Compare\n";
  615.         cout << "R. Compare results\n";
  616. #endif
  617.         cout << "2. Edit character\n";
  618.         cout << "3. Quit\n";
  619.         cout << "Choice:"; 
  620.         cin >> choice;
  621.         
  622.         switch (choice)
  623.             {
  624.         case '1': 
  625.             
  626.             dspcdjd->pc_print(); 
  627.             break;
  628. #ifdef DEBUG_1      
  629.         case 'C':
  630.             dspcdjd->pc_comp();
  631.             break;
  632.         case 'R':
  633.             dspcdjd->pc_results();
  634.             break;
  635. #endif
  636.         case '2':
  637.             dspcdjd->pc_edit();
  638.         case '3':
  639.             break;
  640.             }
  641.         }
  642.     dspcdjd->fin();
  643.     }
  644.         
  645.         
  646.         
  647.         
  648.